2012-11-24 60 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快倍。