PHP:具有空键的http_build_query多维数组

时间:2018-07-27 09:06:36

标签: php

我正在尝试使用PHP函数http_build_query()创建以下输出:

xyz[abc][]=someValue

第一种方法很简单:

$params = ['xyz' => ['abc' => 'someValue']];

echo http_build_query($params); // Outputs: xyz[abc]=someValue (urlencoded ofc)

但是当我尝试了许多种方法来放置第二个[]时,我失败了,以至于我不知道进一步。我的计划是不编写新函数,因为我通常会尽可能多地使用PHP通用函数。但是,如果不可能,我很高兴看到一些解决我问题的方法。

预先感谢:)!

1 个答案:

答案 0 :(得分:2)

有关使用preg_replace()对字符串进行“后处理”的建议。

这会寻找[n]并将其替换为[]

$params = ['xyz' => ['abc' => ['someValue'] ] ];

$query = preg_replace( '/%5B\d+%5D/','%5B%5D', http_build_query( $params ) );

$params = ['xyz' => ['abc' => ['someValue'] ] ];

$query = urlencode( preg_replace( '/\[\d+\]/','[]', urldecode( http_build_query( $params ) ) ) );