2015-02-03 3 views
-1

Мой старый массив данных:сравнения двух массивов и разница возврата массивов

[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 data и уловить только изменение, внесенное в значение. я есть использовать этот код:

$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 
       } 
      } 
+0

пожалуйста вышли комментарии почему вы вниз голосовать ??? – Ali

ответ

2

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

$changes = array_diff_assoc($new, $old); 
+0

Не работает Ошибка преобразования массива в строку. – Ali

+0

У меня есть ваш код $ changes = array_diff_assoc ($ newJobData, $ oldJobData); и $ newJobData и oldJobData оба являются массивами – Ali

+0

благодаря моей ошибке, array_diff_assoc работает для меня! – Ali

Смежные вопросы