php url查询无索引的嵌套数组

前端之家收集整理的这篇文章主要介绍了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要点,以便其他人可以使用它!

猜你在找的PHP相关文章