Home > Backend Development > PHP Tutorial > PHP 使用CURL 传递多维数组问题

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

WBOY
Release: 2016-06-23 13:29:12
Original
1199 people have browsed it

现在要写一个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);    }
Copy after login

开始用的时候一直出现 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));
Copy after login

这样来解决,数据都是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 

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template