首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有相同名称参数的http_build_query

具有相同名称参数的http_build_query
EN

Stack Overflow用户
提问于 2011-11-18 00:03:14
回答 2查看 9.1K关注 0票数 22

有没有一种方法可以使用相同名称的参数通过http_build_query自动构建查询?

如果我做像这样的事情

代码语言:javascript
复制
array('foo' => 'x', 'foo' => 'y');

它们显然在数组中被覆盖了,但即使我这样做了:

代码语言:javascript
复制
array('foo' => array('x', 'y'));

该函数创建了类似于foo[0]=x&foo[1]的东西,这不是我想要的,因为我需要foo=x&foo=y格式的参数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-18 01:35:16

这应该可以做你想要的,我有一个api,需要同样的东西。

代码语言:javascript
复制
$vars = array('foo' => array('x','y'));
$query = http_build_query($vars, null, '&');
$string = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $query); //foo=x&foo=y
票数 41
EN

Stack Overflow用户

发布于 2017-04-26 02:10:51

下面是我创建的一个函数,用于构建查询并保留名称。我创建它是为了使用第三方API,该API需要多个具有相同名称的查询字符串参数。

代码语言:javascript
复制
function custom_build_query($query_data) {
    $query = array();
    foreach ($query_data as $name => $value) {
        $value = (array) $value;
        array_walk_recursive($value, function($value) use (&$query, $name) {
            $query[] = urlencode($name) . '=' . urlencode($value);
        });
    }
    return implode("&", $query);
}

用法:

代码语言:javascript
复制
echo custom_build_query(['a' => 1, 'b' => 2, 'c' => [3, 4]]);

输出:

代码语言:javascript
复制
a=1&b=2&c=3&c=4
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8170306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档