Как в PHP слить 2 массива с одинаковыми значениями, и перезаписать их?

183
14 апреля 2018, 19:25

Как в PHP слить 2 массива с одинаковыми значениями, и перезаписать их?

Пример:

Первый массив

Array
(
[89] => Array
    (
        [NAME] => "Имя1"
        [ELEMENTS] => Array
            (
                [2702] => "Значение1"
                [2703] => "Значение2"
                [2704] => "Значение3"
            )
    )
[90] => Array
    (
        [NAME] => "Имя2"
        [ELEMENTS] => Array
            (
                [2694] => "Значение1"
                [2695] => "Значение2"
            )
    )
)

Второй массив

Array
(
[100] => Array
    (
        [NAME] => "Имя1"
        [ELEMENTS] => Array
            (
                [2755] => "Значение1"
                [2756] => "Значение2"
            )
    )
[101] => Array
    (
        [NAME] => "Имя2"
        [ELEMENTS] => Array
            (
                [2800] => "Значение1"
                [2801] => "Значение2"
            )
    )
)

Как их слить так, чтобы получился такой массив, то есть значения из второго массива перезаписали одинаковые значения первого:

Array
(
[100] => Array
    (
        [NAME] => "Имя1"
        [ELEMENTS] => Array
            (
                [2755] => "Значение1"
                [2756] => "Значение2"
                [2704] => "Значение3"
            )
    )
[101] => Array
    (
        [NAME] => "Имя2"
        [ELEMENTS] => Array
            (
                [2800] => "Значение1"
                [2801] => "Значение2"
            )
    )
)
Answer 1

Обычно массивы сливают не по значениям, а по ключам. Для такой структуры массивов ($adata, $bdata) можно решить задачу, например, следующим образом.

$result = [];
foreach($adata as $a) {
    foreach ($bdata as $k => $b) {
        if ($a['NAME'] != $b['NAME']) continue;
        $fa = array_flip($a['ELEMENTS']);
        $fb = array_flip($b['ELEMENTS']);
        $el = array_flip(array_merge($fa, $fb));
        $result[$k] = ['NAME' => $a['NAME'], 'ELEMENTS' => $el];
    }
}
READ ALSO
PHP. Поиск по массиву

PHP. Поиск по массиву

Имеется массив городов, нужно сделать множественный поиск по этому массиву

184
Много сообщений на одно, VK LongPoll Api

Много сообщений на одно, VK LongPoll Api

Возникла проблема, при отправке одно сообщения бот отвечает кучей, я много чего перебровал, но все четно

154
как получить массив данных из trello используя cUrl

как получить массив данных из trello используя cUrl

Хочу получить данные о всех досках имеющихся в моем аккеТ

170