2013-03-08 25 views
0
$arr=array('a'=>1,'b'=>2); 

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

我需要得到a=1,b=2implode與保存鍵的分組數組?

我知道我可以通過使用foreach得到它,但我知道使用較少代碼的方法較短。

回答

2

試試這個:

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

你可以試試:

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

http_build_query()的第三個參數是分隔符,所以它使用str_replace()

使用urldecode()解碼是沒有必要的,因爲http_build_query()將urlencode字符串。

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