2016-12-17 7 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" 
    } 
    } 
} 
私が欲しい

、私はarray_mergearray_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

あなたはこのようなあなたの配列をフラット化することができます:あなたはRecursiveIteratorIteratorを使用したくない場合は、あなたもarray_walk_recursive()を使用して、このようにそれを行うことができます:

$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

$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 - この回答が正解であれば、それを受け入れて、この回答を受け入れることで、このような他の質問への回答を促し、他の人が正しい回答をすばやく見つけるのを助けます。 –

+0

はいそうです。確かに。 –

関連する問題