搜索了这么久但没有得到任何可行的答案.
A)输入:
$array = array(
'order_source' => array('google','facebook'),
'order_medium' => 'google-text'
);
看起来像:
Array
(
[order_source] => Array
(
[0] => google
[1] => facebook
)
[order_medium] => google-text
)
B)所需产量:
order_source=google&order_source=facebook&order_medium=google-text
C)我尝试过的(http://3v4l.org/b3OYo):
$arr = array('order_source' => array('google','facebook'), 'order_medium' => 'google-text');
function bqs($array, $qs='')
{
foreach($array as $par => $val)
{
if(is_array($val))
{
bqs($val, $qs);
}
else
{
$qs .= $par.'='.$val.'&';
}
}
return $qs;
}
echo $qss = bqs($arr);
D)我得到了什么:
order_medium=google-text&
注意:它也适用于像http_build_query()这样的任何单维数组.
解决方法:
我希望这是你正在寻找的,它适用于单个到n维的数组.
$walk = function( $item, $key, $parent_key = '' ) use ( &$output, &$walk ) {
is_array( $item )
? array_walk( $item, $walk, $key )
: $output[] = http_build_query( array( $parent_key ?: $key => $item ) );
};
array_walk( $array, $walk );
echo implode( '&', $output ); // order_source=google&order_source=facebook&order_medium=google-text