2015-03-25 83 views
1

我想內爆一個多維數組,但我失去了一些東西。Implode一個多維數組

這是數組:

Array 
(
    [0] => Array 
     (
      [0] => Brand 1 
     ) 
    [1] => Array 
     (
      [0] => Brand 2 
     ) 
) 

所以經過一些谷歌-ING我發現一對夫婦的解決方案,但他們都給我不同的錯誤。

我看到array_map()應該可以工作,但我無法弄清楚第二個參數應該是什麼。

,我發現了以下錯誤:

Warning: array_map() expects at least 2 parameters, 1 given in

這是我的代碼:

$imploded = implode("','",array_map($brand_array)); 

$brand_array是從in_array功能

的目標是構建一個新創建的數組得到逗號分隔的字符串,如:

brand1, brand2 
+0

你可以參考表格http://stackoverflow.com/questions/12050892/array-mapping-in-php-with-keys – 2015-03-25 10:27:05

+0

我認爲你所描述的是在你壓扁數組之後將數組內爆(因爲它在下劃線中被調用)。如果你谷歌的東西像「PHP陣列flatten」,你會發現幾個解決方案,如http://davidwalsh.name/flatten-nested-arrays-php或https://gist.github.com/kohnmd/11197713 – mishu 2015-03-25 10:28:10

+0

是的,但我需要一個逗號分隔的列表,如:'brand1,brand2' – Interactive 2015-03-25 10:28:30

回答

2

嗯,好像你是一個有點困惑如何使用array_map()。但是,這應該爲你工作:

echo implode(",", array_map(function($v){ 
    return implode(",", $v); 
}, $arr)); 

因此,作爲一個例子:

$arr = [ 
     [1,2], 
     [1,2], 
    ]; 

隨着array_map()你去通過每個innerArray並用逗號implode()它,所以你最終與下面的數組:

Array ([0] => 1,2 [1] => 1,2) 

現在你有了一個一維數組,你必須再次破壞array_map()的返回值,並且用逗號再次撞擊它,您將結束:

1,2,1,2 
+0

這個答案是針對OP更好的解釋。 +1。我是9秒鐘前的,所以我覺得這對我很好。 – Loko 2015-03-25 10:32:44

+1

感謝您的詳細解釋。現在很清楚,我明白爲什麼我不能直接使用'implode()'。 +1 – Interactive 2015-03-25 10:40:35

+0

@Interactive不客氣!享受你的一天:D – Rizier123 2015-03-25 10:41:16

2

array_map()期望您添加回調函數作爲第一個參數,並將數組添加爲第二個參數。

你也可以看到這一點,如果你看一下函數的簽名:

array array_map (callable $callback , array $array1 [, array $... ])

參數:

  • 回調:

    • 回調函數來運行每個陣列中的每個元素。
  • 陣列:

    • 陣列通過回調函數來運行。

你只有在array_map數組你需要的東西是這樣的:

array_map('functionname', $array); 
0

試試下面的代碼

$input = array(
    array(
    'brand 1' 
), 
    array(
    'brand 2' 
) 
); 


echo implode(', ', array_map(function ($entry) { 
    return $entry[0]; 
}, $input));