сравнивая два массива и возвращаем разность массивов

Мой старый массив данных:

[Job] => Array
(
[id] => 2
[job_state_id] => 14
[assigned_to_id] =>
[patient_id] => 2
[prescription] => main
[case_type_id] => 1
[upper_midline_id] => 1
[upper_midline_value] => 0
[lower_midline_id] => 1
[lower_midline_value] => 0
[treat_arches] => 2
[upper_midline_type_id] => 2
[lower_midline_type_id] => 2
[overjet] => 2
[overbite] => 2
[arch_form] => 2
[canine_relationship] => 2
[molar_relationship] => 1
[posterior_crossbite] => 1
[procline] => 2
[expand] => 2
[distalize] => 0
[ipr] => 0
[close_all_spaces] => 2
[other_instructions] => other

и мой новый массив данных:

[Job] => Array
(
[id] => 2
[job_state_id] => 14
[assigned_to_id] =>
[patient_id] => 2
[prescription] => main complain
[case_type_id] => 1
[upper_midline_id] => 1
[upper_midline_value] => 0
[lower_midline_id] => 1
[lower_midline_value] => 0
[treat_arches] => 2
[upper_midline_type_id] => 2
[lower_midline_type_id] => 2
[overjet] => 2
[overbite] => 2
[arch_form] => 2
[canine_relationship] => 2
[molar_relationship] => 1
[posterior_crossbite] => 1
[procline] => 2
[expand] => 2
[distalize] => 0
[ipr] => 1
[close_all_spaces] => 2
[other_instructions] => other instrucations

Вы можете увидеть, что некоторые значения меняются. Мне нужно сравнить данные массива $ new с массивом данных $ old и отловить только изменение, внесенное в значение.
я использую этот код:

$difference = array_diff($oldJobData, $newJobData);

возврат разностной переменной $oldJobData я хочу только разницу, а не весь массив
Я также использую следующий код, но не могу получить желаемый результат.

          $new2 = array();
foreach ($newJobData as $key => $new_val) {
if (isset($oldJobData[$key])) { // belongs to old array?
if ($oldJobData[$key] != $new_val) // has changed?
$new2[$key] = $newJobData[$key]; // catch it
}
}

-1

Решение

У вас есть ассоциативный массив и как таковой необходимо использовать array_diff_assoc:

$changes = array_diff_assoc($new, $old);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]