• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

PHP 使用CURL 传递多维数组问题

PHP admin 1年前 (2018-06-09) 150次浏览 已收录 0个评论
文章目录[隐藏]

现在要写一个API,但是用curl传参数时多维数组的传递有问题

 {        $post_data = array(            'auth-userid' => 611510,            'api-key' => 'api',            'domain-name'=>array('domain1','domain2'),            'tlds' => 'com',        );        $result=http_build_query($post_data);              var_dump($result);    }

开始用的时候一直出现 domain 参数的丢失报错,然后就看下传递的数据,是这样的
string ‘auth-userid=611510&api-key=api&
domain-name%5B0%5D=domain1&domain-name%5B1%5D=domain2&tlds=com’ (length=93);

而我要传的应该是
‘auth-userid=611510&api-key=api&
domain-name=domain1&domain-name=domain2&tlds=com’
这样传才不会报错,为什么用了http_build_query(),二维数组就会出现这个%5B0%5D,和%5B1%5D,这怎么解决

回复讨论(解决方案)

其实这个问题很简单。
http_build_query ? 生成 URL-encode 之后的请求字符串
产生的是一个url encode 的字符串。里面都是已经给encode 。
你可以使用

$post_data = array(            'auth-userid' => 611510,            'api-key' => 'api',            'domain-name'=>array('domain1','domain2'),            'tlds' => 'com',        );        $result=http_build_query($post_data);              var_dump($result);        var_dump(urldecode($result));

这样来解决,数据都是domain-name[0]=domain1&domain-name[1]= 这样来传递。

欢迎你加入到技术群,来学习更多的技术 231566327

%5B0%5D 是 [] 一对方括号
这是按 php 的规则生成的

如果对方不是 php 则要按 domain-name[] 这个名字访问 domain-name 成员
或者你就把它删掉
$result = str_replace(‘%5B0%5D’, ”, http_build_query($post_data));

若对方是 php 的话,就一定不能删了。否则就会少数据了

那还是地址给url encode


39MO , 版权所有丨如未注明 , 均为原创丨转载请注明原文链接:PHP 使用CURL 传递多维数组问题
喜欢 (0)
[1353713598@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址