2012-11-24 31 views
6

如何从一个数组变量合并多个数组?可以说,我在一个数组变量从一个数组中合并多个数组

这些都是在一个变量有这个..
$array = array(array(1), array(2));

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

如何与这个

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

回答

7

这是PHP等效的JavaScript Function#apply的(生成从阵列的参数列表):

$result = call_user_func_array("array_merge", $input); 

演示:http://3v4l.org/nKfjp

+0

嗨@Jan我有一个类似的数组,我试图合并使用你的示例代码。这是一个嵌套数组,尽管如此,我还是得到了变量中的数组进行合并的麻烦。这里是每个数组看起来如何http://pastebin.com/rF8HUDS2你介意告诉我如何用这些数组实现你的代码。 – Anagio

+0

@Anagio因为您的顶级答案是只有'result'键的单元素数组,您需要[map](http://php.net/manual/en/function.array-map.php)元素首先是其唯一元素。在5.3+中,你可以编写'$ input = array_map(function(x){return x ['result']},$ input)' –

1

$resultArray = array_merge ($array1, $array1);

结束
$result = array(); 
foreach ($array1 as $subarray) { 
    $result = array_merge($result, $subarray); 
} 

// Here it is done 

好东西阅读: http://ca2.php.net/manual/en/function.array-merge.php

递归:

http://ca2.php.net/manual/en/function.array-merge-recursive.php

+0

只有一个数组.. .. $ array1只有它有多个数组里面,如何合并它们? – Osa

+0

就是这样;) –

+0

,几乎解决了它,但它仍然有点复杂和烦人做一个循环和东西,是不是有一个单一的功能来做到这一点? – Osa

0

array_merge是你所需要的。

$arr = array_merge($arr1, $arr2); 

编辑:

$arr = array_merge($arr1[0], $arr1[1]); 
+0

只有一个数组.. .. $ arr1只有它有多个数组里面,如何合并它们? – Osa

+0

@Osa:请参阅编辑。 – xbonez

+1

如果'$ arr1'中有两个以上的元素,该怎么办? –

1
$arr1 = array(0=>1); 
$arr2 = array(0=>2); 

$merged = array_merge($arr1,$arr2); 
print_r($merged); 
+0

阅读更新,没有$ arr2 – Osa

3

array_merge评论后可以做的工作

$array_meged = array_merge($a, $b); 

如果固定指数法可以使用:

$array_meged = array_merge($a[0], $a[1]); 

一个更通用的解决方案:

$array_meged=array(); 
    foreach($a as $child){ 
    $array_meged += $child; 
} 
+0

阅读更新,没有$ b – Osa

3

这可能有效:

$array1 = array("item1" => "orange", "item2" => "apple", "item3" => "grape"); 
$array2 = array("key1" => "peach", "key2" => "apple", "key3" => "plumb"); 
$array3 = array("val1" => "lemon"); 

$newArray = array_merge($array1, $array2, $array3); 

foreach ($newArray as $key => $value) { 
    echo "$key - <strong>$value</strong> <br />"; 
} 
1

由于PHP 5.6可以使用variadics参数拆包

$result = array_merge(...$input); 

这是高达3倍比call_user_func_array快倍。