2014-09-06 130 views
1

我有多個arrays,我試圖merge他們。想象下面的代碼;合併PHP關聯數組

$arr1[ 'a' ] = array('a', 'b', 'c'); 
$arr2[ 'a' ] = array('d', 'e', 'f'); 
$arr3[ 'a' ] = array('g', 'h', 'i'); 

$arr1[ 'b' ] = array('a', 'b', 'c'); 
$arr2[ 'b' ] = array('d', 'e', 'f'); 
$arr3[ 'b' ] = array('g', 'h', 'i'); 

$buf = array_merge($arr1, $arr2, $arr3); 
print_r($buf); 

我期待的結果是;

Array 
(
    [a] => Array 
    (
     [ 0 ] => a 
     [ 1 ] => b 
     [ 2 ] => c 
     [ 3 ] => d 
     [ 4 ] => e 
     [ 5 ] => f 
     [ 6 ] => g 
     [ 7 ] => h 
     [ 8 ] => i 
    ) 

    [b] => Array 
    (
     [ 0 ] => a 
     [ 1 ] => b 
     [ 2 ] => c 
     [ 3 ] => d 
     [ 4 ] => e 
     [ 5 ] => f 
     [ 6 ] => g 
     [ 7 ] => h 
     [ 8 ] => i 
    ) 
) 

我嘗試使用array_merge()array_combine()沒有成功。希望任何人都可以幫忙。

回答

4

用途:

$buf = array_merge_recursive($arr1, $arr2, $arr3);

+0

簡單美麗。 – KaekeaSchmear 2014-09-06 20:22:42

2

事情是這樣的:

<?php 
$arr1[ 'a' ] = array('a', 'b', 'c'); 
$arr2[ 'a' ] = array('d', 'e', 'f'); 
$arr3[ 'a' ] = array('g', 'h', 'i'); 

$arr1[ 'b' ] = array('a', 'b', 'c'); 
$arr2[ 'b' ] = array('d', 'e', 'f'); 
$arr3[ 'b' ] = array('g', 'h', 'i'); 

$array = [ 
    'a' => array_merge($arr1['a'], $arr2['a'], $arr3['a']), 
    'b' => array_merge($arr1['b'], $arr2['b'], $arr3['b']) 
]; 

var_dump($array); 
+0

我喜歡這個解決方案,但它根本不會擴展 - 每次添加密鑰時都需要爲您的'$ array'添加關卡,或者創建一個循環來執行此操作。 PHP的[內置函數](http://php.net/array_merge_recursive)幾乎總是會勝過自定義邏輯。 – 2014-09-06 20:50:29

+0

@scrowler我今天學到了東西! thx – mpgn 2014-09-06 21:13:11

1

array_merge()僅查找一層深成陣列。你應該使用array_merge_recursive()this

$buf = array_merge_recursive($arr1, $arr2, $arr3); 
0

$ ARR1 [ '一'] =陣列( 'A', 'B', 'C');

$ arr2 ['a'] = array('d','e','f');

$ arr3 ['a'] = array('g','h','i');

$ arr1 ['b'] = array('a','b','c');

$ arr2 ['b'] = array('d','e','f');

$ arr3 ['b'] = array('g','h','i');

$陣列=陣列(

'a' => array_merge($arr1['a'], $arr2['a'], $arr3['a']), 
'b' => array_merge($arr1['b'], $arr2['b'], $arr3['b']) 

);

print_r($ array);

+0

這與本文發表的30分鐘前發佈的[this one](http://stackoverflow.com/a/25704359/2812842)基本相同。 – 2014-09-06 20:49:24