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

qq_26945233 2015-08-05 10:06:52
现在要写一个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,这怎么解决
...全文
284 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangshl_php 2015-08-05
  • 打赏
  • 举报
回复
那还是地址给url encode
xuzuning 2015-08-05
  • 打赏
  • 举报
回复
%5B0%5D 是 [] 一对方括号 这是按 php 的规则生成的 如果对方不是 php 则要按 domain-name[] 这个名字访问 domain-name 成员 或者你就把它删掉 $result = str_replace('%5B0%5D', '', http_build_query($post_data)); 若对方是 php 的话,就一定不能删了。否则就会少数据了
zhangshl_php 2015-08-05
  • 打赏
  • 举报
回复
其实这个问题很简单。 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

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧