#php #arrays #merge #array-merge
#php #массивы #слияние #массив-слияние
Вопрос:
Я пытаюсь выяснить, как объединить два массива, который изначально работал, но теперь я пытаюсь объединить многомерные массивы.
Первый массив:
$old_array =
Array (
[2] => Array (
[a] => Location 2
[b] => loc02
[c] => Array ( )
)
[3] => Array (
[a] => Location 3
[b] => loc04
[c] => Array ( [reader] => reader )
)
)
И второй массив:
$new_array =
Array (
[3] => Array (
[a] => Location 3 New
[b] => loc06
[c] => Array ( [publisher] => publisher )
)
)
Когда я запускаю then через array_merge( $old_array, $new_array )
, второй массив просто добавляется снизу, в отличие от замены той же строки.
Это работало ранее, единственным изменением было добавление [c]
массива и не уверен, что слияние вызывает добавление, а не замену.
Комментарии:
1. Используйте
array_replace
вместо этого для числовых индексов.
Ответ №1:
Для числовых индексов array_merge просто добавит новые элементы в конец первого массива. Это хорошо работает для строкового индекса, поскольку значения перезаписываются. Если вы хотите объединить их для числовых индексов, используйте оператор » «.
Проверьте этот комментарий:https://www.php.net/manual/en/function .array-merge.php#92602
Забыл добавить, что если у вас есть 2 массива, $a
и $b
и вы хотите перезаписать значения $a
значениями $b
, то, $new_array = $b $a;
таким образом, приведенный выше массив приведет к:
Array
(
[3] => Array
(
[a] => Location 3 new
[b] => loc06
[c] => Array
(
[publisher] => publisher
)
)
[2] => Array
(
[a] => Location 2
[b] => loc02
[c] => Array
(
)
)
)
Комментарии:
1. пробовал это до того, как я задал вопрос, но имел $ a $ b, и это не сработало. спасибо за разъяснение этого!