前端之家收集整理的这篇文章主要介绍了
php url查询无索引的嵌套数组,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
403_0@
我正在使用第三方API来接收必须编码的几个参数:
text[]=Hello%20World&text[]=How%20are%20you?&html[]=<p>Just%20fine,%20thank%20you</p>
您可以看到这个API可以接受文本的多个参数,也可以接受HTML(不在示例调用中).
我使用http_build_query来正确构建其他API的查询字符串
$params['text'][] = 'Hello World';
$params['text'][] = 'How are you?';
$params['html'][] = '<p>Just fine,thank you</p>';
$http_query = http_build_query($params);
这种方法的问题是它将使用数字索引构建查询字符串:
text [0] = Hello World& text [1] =你好吗?& html [0] =< p>好的,谢谢< / p>
不幸的是,我正在使用的API不喜欢数字索引并失败.
有没有PHP函数/类方法可以帮助我快速构建一个这样的查询?
谢谢
似乎没有办法通过http_build_query来做到这一点.抱歉.在docs
页面上,有人说:
function cr_post($a,$b=0,$c=0){
if (!is_array($a)) return false;
foreach ((array)$a as $k=>$v){
if ($c) $k=$b."[]"; elseif (is_int($k)) $k=$b.$k;
if (is_array($v)||is_object($v)) {
$r[]=cr_post($v,$k,1);continue;
}
$r[]=urlencode($k)."=" .urlencode($v);
}
return implode("&",$r);
}
$params['text'][] = 'Hello World';
$params['text'][] = 'How are you?';
$params['html'][] = '<p>Just fine,thank you</p>';
$str = cr_post($params);
echo $str;
我没有测试过.如果不行,那么你将不得不自己滚动.也许你可以发布一个github要点,以便其他人可以使用它!