当使用curlpost一个请求的话,一般代码如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
当这里传递的$data如果是标准的一个phparray对象的话,如果array有嵌套,比如
array(a=>array(5))的话,接受到的对象就会变成 array(a => Array)这样,是不符合请求的;
如果$data是一个标准的json的话,依然会有问题:
$data= {"a"=[1,2,3]}则请求后的结果是
array({a=>array(xxx)})具体原因不知道,貌似是由于$_POST对象解析相关
所以,如果想传参数的话可以有以下2种方式
1. 传递对象:http_build_query($data),传递这个值,这请求到的是ok的
2. 传递json:在外面包装一层array既 $data['json'] = {"a"=[1,2,3]} 则,获得到的$_POST['json']是ok的