我正在尝试使用PHP函数http_build_query()
创建以下输出:
xyz[abc][]=someValue
第一种方法很简单:
$params = ['xyz' => ['abc' => 'someValue']];
echo http_build_query($params); // Outputs: xyz[abc]=someValue (urlencoded ofc)
但是当我尝试了许多种方法来放置第二个[]
时,我失败了,以至于我不知道进一步。我的计划是不编写新函数,因为我通常会尽可能多地使用PHP通用函数。但是,如果不可能,我很高兴看到一些解决我问题的方法。
预先感谢:)!
答案 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 ) ) ) );