PHP - 查询字符串的多维数组 [英] PHP - multidimensional array to query string

查看:42
本文介绍了PHP - 查询字符串的多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

搜索了很长时间,但没有得到任何可行的答案.

Searched for so long but didn't get any feasible answer.


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

order_source=google&order_source=facebook&order_medium=google-text


C)我尝试过的(http://3v4l.org/b3OYo):


C) What I've tried (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&

order_medium=google-text&


注意:它也应该适用于任何一维数组,如 http_build_query() 作品.


Note: It should also work for any single dimensional array like http_build_query() works.

推荐答案

我希望这就是您正在寻找的,它适用于单维到 n 维数组.

I hope that this is what you are looking for, it works with single to n-dimensinal arrays.

$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 

这篇关于PHP - 查询字符串的多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆