web-dev-qa-db-ja.com

PHP:2つの多次元配列をマージ

新しい配列を作成するには、2つの多次元配列をマージする必要があります。
2つの配列は$_POSTおよび$_FILESから作成され、それらを相互に関連付ける必要があります。

アレイ#1

Array 
(
    [0] => Array
        (
            [0] => 123  
            [1] => "Title #1"
            [2] => "Name #1"
        )
    [1] => Array
        (
            [0] => 124  
            [1] => "Title #2"
            [2] => "Name #2"
        )
)

アレイ#2

Array
(
    [name] => Array
        (
            [0] => Image001.jpg
            [1] => Image002.jpg
        )
)

新しいアレイ

Array
(
    [0] => Array
        (
            [0] => 123  
            [1] => "Title #1"
            [2] => "Name #1"
            [3] => "Image001.jpg"
        )
    [1] => Array
        (
            [0] => 124  
            [1] => "Title #2"
            [2] => "Name #2"
            [3] => "Image002.jpg"
        )
)

私が使用している現在のコードは機能しますが、配列の最後の項目に対してのみです。
array_merge関数をループすることで、ループごとに新しい配列をワイプすることを想定しています。

$i=0;
$NewArray = array();
foreach($OriginalArray as $value) {
    $NewArray = array_merge($value,array($_FILES['Upload']['name'][$i]));
    $i++;
}

これを修正するにはどうすればよいですか?

17
ticallian
$i=0;
$NewArray = array();
foreach($OriginalArray as $value) {
    $NewArray[] = array_merge($value,array($_FILES['Upload']['name'][$i]));
    $i++;
}

[]は、上書きする代わりに配列に追加します。

14
Jay Paroline

組み込みの配列関数のいずれかを使用します。

array_merge_recursiveまたはarray_replace_recursive

http://php.net/manual/en/function.array-merge-recursive.php

24
wintondeshong

ループと配列表記のみを使用する:

$newArray = array();
$i=0;
foreach($arary1 as $value){
  $newArray[$i] = $value;
  $newArray[$i][] = $array2["name"][$i];
  $i++;
}
3
Marius