array_merge не заменяет соответствующий $key

#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, и это не сработало. спасибо за разъяснение этого!