Всем привет. Есть два массива. Один хранится в базе, второй прилетает через определенный промежуток ответом на запрос от API. Необходимо сравнивать массивы и выводить их расхождения. Например в базе лежит массив: PHP: $old_data =[ ['name' =>'name1','value'=>'123'], ['name' =>'name2','value'=>'456'], ['name' =>'name3','value'=>'789'], ]; Нам прилетает новый массив, в котором есть некоторые отличия: PHP: $new_data =[ ['name' =>'name1','value'=>'321'],// value изменился ['name' =>'name2','value'=>'456'], ['name' =>'name3','value'=>'789'], ['name' =>'name4','value'=>'999'],// новый элемент ['name' =>'name5','value'=>'000'],// новый элемент ]; Как бы PHP: $diff = array_filter($new_data, function ($element) use (&$old_data) { return !in_array($element, $old_data); }); var_dump($diff); В вышеописанном примере работает - возвращает те значения, которые изменились или добавились. Не могу понять одну вещь, если массивы поменять местами - сделать что бы в новом массиве пришло меньше элементов чем в старом, то не работает - возвращает весь массив
Как вариант - удалять всё навиг из таблицы, и писать новое, если не хочешь так - пиши цикл сравнения массивов, хотя, уверен что с помощью нативных функций можно что-то нарешать