Как показать расхождения в ассоциированных массивах php

Ответы
Аватар пользователя Nikolai Gagarinov
Nikolai Gagarinov
30 ноября 2021

В PHP есть функция, которая сравнивает массивы и возвращает все ключи и значения, которых нет в последующих массивах. Соответственно можно сравнить два массива, сперва узнав, что было удалено, а потом, что было добавлено. Функция работает на одном уровне вложенности, поэтому для глубокого сравнения нужно использовать какую-нибудь библиотеку или написать свою реализацию.

Пример

<?php

$data1 = [
  'key1' => 'value',
  'key2' => 'value2',
];


$data2 = [
  'key3' => 'added',
];

var_dump(array_diff_assoc($data1, $data2));
//=> array(1) {
//=>   ["key2"]=>
//=>   string(7) "deleted"
//=> }
var_dump(array_diff_assoc($data2, $data1));
//=> array(1) {
//=>   ["key3"]=>
//=>   string(5) "added"
//=> }