php CURLOPT_POSTFIELDS 如何传递多参数

如题,

$data = $textArray['content'];// 是个字符串
$params = array('top_k'=>10);
$ch = curl_init();
curl_setopt_array($ch,
    CURLOPT_POSTFIELDS => json_encode($data,$params,JSON_UNESCAPED_UNICODE),
));// 这里其他部分省略了

我是这样写的

但是打印json_encode($data,$params,JSON_UNESCAPED_UNICODE),发现为空

然后这样写CURLOPT_POSTFIELDS => json_encode($data,JSON_UNESCAPED_UNICODE),json_encode($params,JSON_UNESCAPED_UNICODE),
这样发现$params没有传过去

求解答 谢谢

阅读 4k
2 个回答

方法1

$data = $textArray['content'];// 是个字符串
$params = array('top_k'=>10);

$array = [];
$array['data'] = $data;
$array['params'] = $params;

$ch = curl_init();
curl_setopt_array($ch,
    CURLOPT_POSTFIELDS => json_encode($array,JSON_UNESCAPED_UNICODE),
));
//code.....

方法2

$data = $textArray['content'];// 是个字符串
$params = array('top_k'=>10);

$params['data'] = $data;

$ch = curl_init();
curl_setopt_array($ch,
    CURLOPT_POSTFIELDS => json_encode($params,JSON_UNESCAPED_UNICODE),
));
//code.....

方法2的变形

$data = $textArray['content'];// 是个字符串

$params = array('top_k'=>10,'data'=>$data);

$ch = curl_init();
curl_setopt_array($ch,
    CURLOPT_POSTFIELDS => json_encode($params,JSON_UNESCAPED_UNICODE),
));
//code.....

方法3 简洁版

$ch = curl_init();
curl_setopt_array($ch,
    CURLOPT_POSTFIELDS => json_encode(array('top_k'=>10,'data'=>$textArray['content']),JSON_UNESCAPED_UNICODE),
));
//code.....

这不就可以了。。。。

我发现你对php的基础知识都不了解。。

curl_setopt_array($ch,
    CURLOPT_POSTFIELDS => json_encode($data,$params,JSON_UNESCAPED_UNICODE),
));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json'
);
//接收
$data  = file_get_contents('php://input');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题