2016-12-17 3 views
0

이 질문을하기 전에 물어 보지 않겠습니까, 많이 찾은 후에 찾을 수 없습니다.배열 PHP에있는 모든 키 값을 병합

내 배열은

array(3) { 
    [0]=> 
    array(2) { 
    [0]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "421" 
    } 
    [1]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "329" 
    } 
    } 
    [1]=> 
    array(1) { 
    [0]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "329" 
    } 
    } 
    [4]=> 
    array(2) { 
    [0]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "329" 
    } 
    [1]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "421" 
    } 
    } 
} 
I가 원하는 것은

, 내가 array_merge, array_combine으로 시도

array(1) { 
    [0]=> 
    array(5) { 
    [0]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "421" 
    } 
    [1]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "329" 
    } 
    [2]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "329" 
    } 
    [3]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "329" 
    } 
    [4]=> 
    array(1) { 
     ["userId"]=> 
     string(3) "421" 
    } 
    } 
} 

foreach() 루프를 많이 본 것 같습니다. 그러나 원하는 출력을 얻지 못했습니다.

어떻게 해야할지 모르겠다. 도와주세요.

답변

1

이처럼 배열을 평평하게 할 수 있습니다

$arr = array(array(['user' => 1], ['user' => 2]), ['user' => 3]); 
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr)); 
foreach($iterator as $val) { 
    $flattened_arr[0][] = $val; 
} 
var_dump($flattened_arr); 

UPDATE : 당신이 RecursiveIteratorIterator를 사용하지 않으 경우, 당신은 또한 array_walk_recursive() 사용하여 이런 식으로 작업을 수행 할 수 있습니다

$non_flat_arr = array(array(['user' => 1], ['user' => 2]), ['user' => 3]); 
$objTmp = (object) array('flat_arr' => array()); 
array_walk_recursive($non_flat_arr, create_function('&$v, $k, &$t', '$t->flat_arr[] = $v;'), $objTmp); 
var_dump([ 0 => $objTmp->flat_arr]); 

그러면 다음과 같이 출력됩니다.

array:1 [ 
    0 => array:3 [ 
    0 => 1 
    1 => 2 
    2 => 3 
    ] 
] 

희망이 도움이됩니다!

+0

대단히 감사합니다. 그러나 'RecursiveIteratorIterator'가 라이브 사이트 서버에서 지원되지 않는 경우 (전문적으로 또는 기술적으로 '라이브 사이트 서버'로 불리는 것을 모르는 경우) 어떻게해야합니까? –

+0

@ KeyurK -이 답변이 정확하고 도움이된다면이 답을 받아 들여 & upvote하면 다른 질문에 대한 답을 내게 동기를 부여하고 다른 사람들이 정답을 빨리 찾도록 도와줍니다! –

+0

예. 확실히. –