Здравствуйте. Суть: Как получить данные, что во второй записи был добавлено 2 массива и убран 1? То есть информирование и в случае добавления, и в случаи удаления. Мне нужно получить именно массивы, а не элементы (слова). PHP: $a1 = array( ['витамин С', 'витамин Б', 'Сахар'], ['цинк', 'витамин Б'], // удалён ['медь', 'Сахар', 'войлок'], ['Кальций', 'Магний', 'Железо'], ['Кислота', 'Витамин К', 'Витамин Е'] ); $a2 = array( ['витамин С', 'витамин Б', 'Сахар'], ['медь', 'Сахар', 'войлок'], ['Кальций', 'Магний', 'Железо'], ['Кислота', 'Витамин К', 'Витамин Е'], ['Лимонад', 'витамин Б'], // добавлен ['Заяц', 'витамин Б', 'Кролик'], // добавлен ); Первая мысль, которая была у меня - это добавить в массив md5 каждую строку и сравнивать с помощью array_diff_assoc, но уже md5. Но я предполагаю, что это не совсем правильное решение, так как перевод каждой строки в md5 будет занимать время и память. Может быть есть какое-нибудь встроенное решение или более оптимизированное? На данный момент у меня вот так: Спойлер: code Код (Text): $a1 = array( ['111', '111', '111'], ['222', '222'], ['333', '333', '333'], ); $a2 = array( ['111', '111', '111'], ['333', '333', '333'], ['444', '444', '444'], ); $new_a1 = array(); $new_a2 = array(); foreach ($a1 as $value) { $hash = md5(json_encode($value)); $new_a1[$hash] = $value; } foreach ($a2 as $value) { $hash = md5(json_encode($value)); $new_a2[$hash] = $value; } $added = array_diff_assoc($new_a2,$new_a1);// Добавлено $remove = array_diff_assoc($new_a1,$new_a2);// Удалено vardump($added); echo "<br>"; vardump($remove) оно работает, только мне кажется, что это не совсем правильно
https://www.php.net/manual/ru/function.array-diff-assoc.php#111675 --- Добавлено --- с учетом что могут быть многомерные многомерных аля массивов