2014-09-06 128 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