Как в 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"
)
)
)
Обычно массивы сливают не по значениям, а по ключам.
Для такой структуры массивов ($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];
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости