2015-03-25 167 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));