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

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의 [built in functions] (http://php.net/array_merge_recursive)는 거의 항상 커스텀 로직을 능가 할 것입니다. –

+0

@ scrowler 오늘 뭔가를 배웠습니다! thx – mpgn

1

array_merge() 만 배열로 한 단계 깊은 보인다. 넌 thisarray_merge_recursive()을 위해 사용해야

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

$ arr1 [ 'A'= 배열 ('A', 'B', 'C');

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

$ arr3 [ 'a'] = 배열 ​​('g', 'h', 'i');

$ arr1 [ 'b'] = 배열 ​​('a', 'b', 'c');

$ arr2 [ 'b'] = 배열 ​​('d', 'e', ​​'f');

$ arr3 [ 'b'] = 배열 ​​('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

이것은 본질적으로 [this one] (http://stackoverflow.com/a/25704359/2812842)와 같은 답변으로, 30 분 전에 게시되었습니다. –