内爆具有保留键的关联数组


implode assotiative array with preserving keys?

$arr=array('a'=>1,'b'=>2);
echo implode(',',$arr) // returns '1,2'

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

我知道我可以通过使用foreach来获得它,但我知道有一种更短的方法,使用更少的代码。

试试这个:

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

您可以尝试:

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

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

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

如果您希望在格式化或处理数组元素方面有更多的控制,您可以尝试:

<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

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

您可以尝试以下PHP操作:
http://phpfiddle.org/main/code/f95-wsk