PHP: объединить 2 многомерных массива - PullRequest
15 голосов
/ 13 октября 2009

Мне нужно объединить 2 многомерных массива вместе, чтобы создать новый массив.
2 массива созданы из $_POST и $_FILES, и мне нужно, чтобы они были связаны друг с другом.

Array # 1

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

Array # 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++;
}

Как мне исправить это?

Ответы [ 3 ]

20 голосов
/ 21 ноября 2012

Используйте любую из встроенных функций массива:

array_merge_recursive или array_replace_recursive

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

13 голосов
/ 13 октября 2009
$i=0;
$NewArray = array();
foreach($OriginalArray as $value) {
    $NewArray[] = array_merge($value,array($_FILES['Upload']['name'][$i]));
    $i++;
}

[] добавит его в массив вместо перезаписи.

3 голосов
/ 13 октября 2009

Использование только циклов и записи массива:

$newArray = array();
$i=0;
foreach($arary1 as $value){
  $newArray[$i] = $value;
  $newArray[$i][] = $array2["name"][$i];
  $i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...