Как я могу объединить массив в дочерний уровень другого массива (рекурсивно)? - PullRequest
0 голосов
/ 16 мая 2018

массив1:

array(1) {
  [0]=>
  array(2) {
    ["1234"]=>
    array(1) {
      ["fileName"]=>
      string(10) "monkey.jpg"
    }
    ["3456"]=>
    array(1) {
      ["fileName"]=>
      string(9) "horse.jpg"

    }
  }
}

массив2:

array(2) {
  ["number"]=>
  string(2) "62"
  ["company"]=>
  string(7) "animals"
}

Я хочу объединить два массива вместе:

$result = array_merge_recursive($array1,$array2);

Это результат:

array(3) {
  [0]=>
  array(2) {
    ["1234"]=>
        array(1) {
          ["fileName"]=>
          string(10) "monkey.jpg"
        }
     ["3456"]=>
        array(1) {
          ["fileName"]=>
          string(9) "horse.jpg"   
     }
  }
  ["number"]=>
  string(2) "62"
  ["company"]=>
  string(7) "animals"
}

Но результат, который мне действительно нужен, был бы таким:

array(1) {
  [0]=>
  array(4) {
     ["1234"]=>
          array(1) {
         ["fileName"]=>
          string(10) "monkey.jpg"
         }
      ["3456"]=>
         array(1) {
            ["fileName"]=>
           string(9) "horse.jpg"   
         }
      ["number"]=>
      string(2) "62"
      ["company"]=>
      string(7) "animals"
  }
}

Как мне этого добиться?


Я тестирую array_push как RaymondNijlandпредложил:

array_push($array1[0],$array2);

Но теперь $array1 выглядит так:

array(1) {
  [0]=>
  array(3) {
    ["1234"]=>
     array(1) {
     ["fileName"]=>
      string(10) "monkey.jpg"
       }
    ["3456"]=>
       array(1) {
        ["fileName"]=>
        string(9) "horse.jpg"   
      }
    }
    [0]=>
    array(2) {
        ["number"]=>
         string(2) "62"
         ["company"]=>
         string(7) "animals"
    }
  }
}

Все еще не результат, который я ищу

Ответы [ 2 ]

0 голосов
/ 16 мая 2018
$array3 = $array1;
foreach ($array2 as $key => $value) {
  $array3[0][$key] = $value;
}
0 голосов
/ 16 мая 2018

Поскольку вы хотите добавить в существующий массив, переберите новый массив и добавьте каждый его элемент.

Вот функция и пример использования:

function array_merge_recursive_custom($array1, $array2){
    $result[] = $array1;

    foreach($array2 as $key=>$value){
        $result[0][$key] = $value;
    }
    return $result;
}

$array1 = ['1234' => ['fileName' => 'monkey.jpg'], '3456' => ['fileName' => 'horse.jpg']];
$array2 = ['number' => '62', 'company' => 'animals'];

$result = array_merge_recursive_custom($array1, $array2);

var_dump($result);

Выход:

array(1) {
  [0]=>
  array(4) {
    [1234]=>
    array(1) {
      ["fileName"]=>
      string(10) "monkey.jpg"
    }
    [3456]=>
    array(1) {
      ["fileName"]=>
      string(9) "horse.jpg"
    }
    ["number"]=>
    string(2) "62"
    ["company"]=>
    string(7) "animals"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...