微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP – 用于查询字符串的多维数组

搜索了这么久但没有得到任何可行的答案.

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 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐