Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $old_data = [
- ['name' => 'name1', 'value' => '123'],
- ['name' => 'name2', 'value' => '456'],
- ['name' => 'name3', 'value' => '789'],
- ];
- $new_data = [
- ['name' => 'name1', 'value' => '321'], // value изменился
- ['name' => 'name2', 'value' => '456'],
- ['name' => 'name3', 'value' => '789'],
- ['name' => 'name4', 'value' => '999'], // новый элемент
- ['name' => 'name5', 'value' => '000'], // новый элемент
- ];
- foreach ($new_data as $key => $value) {
- if(isset($old_data[$key])){
- $diff = array_diff($value, $old_data[$key]);
- } else {
- /// тут обрабатываем новые элементы, например добавляем их в результирующий массив diff
- }
- }
- $diff = array_filter($new_data, function ($element) use (&$old_data) {
- return !in_array($element, $old_data);
- });
- var_dump($diff);
- $diff = array_udiff( $old_data, $new_data, function ($a, $b) { return $a != $b; } );
- var_dump($diff);
- //сравниваем имеющиеся и новые массивы записей, к примеру, на основе поля 'url':
- $to_insert = [];
- $to_delete = [];
- $len_new = count($new_records);
- $len_last = count($last_records);
- for ($i=0; $i < $len_new; $i++) {
- $to_insert_counter = 0;
- for ($j=0; $j < $len_last; $j++) {
- if ($new_records[$i]['url'] !== $last_records[$j]['url']) {
- $to_insert_counter++;
- if ($to_insert_counter === $len_last)
- $to_insert[] = $new_records[$i];
- $to_delete_counter++;
- if ($to_delete_counter === $len_new)
- $to_delete[] = $last_records[$j];
- }
- }
- }
Add Comment
Please, Sign In to add comment