使用保留键来破坏关联数组?

时间:2013-03-08 20:00:45

标签: php arrays implode

$arr=array('a'=>1,'b'=>2);

echo implode(',',$arr) // returns '1,2'

我需要获得a=1,b=2作为结果。

我知道我可以使用foreach来获取它,但我知道使用更少的代码会有更短的方法。

3 个答案:

答案 0 :(得分:2)

试试这个:

<?php
$arr=array('a'=>1,'b'=>2);
echo str_replace('&', ',', http_build_query($arr));

答案 1 :(得分:2)

您可以尝试:

echo urldecode(http_build_query($arr, '', ','));

http_build_query()的第三个参数是分隔符,因此不需要使用str_replace()

使用urldecode()进行解码,因为http_build_query()会对字符串进行urlencode。

答案 2 :(得分:1)

如果您想要更多地控制格式化或处理数组元素,可以尝试:

<pre>
    <?php
        $fruits = array("d" => "lemon", 
                        "a" => "orange", 
                        "b" => "banana", 
                        "c" => "apple");

        function format_list(&$list, $key)
        {
            $list = "{$key}={$list}";
        }

        echo "Starting array:\n";
        print_r($fruits);

        echo "\nModified array:\n";
        array_walk($fruits, 'format_list');
        print_r($fruits);

        echo "\nFinal string:\n";
        echo implode(',',$fruits);

    ?>
</pre>

我使用了两个PHP函数array_walkimplode,但我还需要定义一个回调函数format_list

如Landons所示,使用http_build_query更简洁,但就像PHP一样,有许多方法可以做同样的事情。

您可以尝试以下PHP小提琴:
http://phpfiddle.org/main/code/f95-wsk