2016-05-30 2 views
0

У меня есть два многомерных массива, которые я хочу сравнить. Вот как они выглядят. Я хочу получить разницу. Я попробовал массив diff, но он не работает. Heres мой кодКак сравнить два массива в php

Array1 
(
    [0] => Array 
    (
    [name] => john 
    [surname] => elvis 
    [idnumber] => 01148015 
) 
    [1] => Array 
    (
    [name] => sammy 
    [surname] => dwayne 
    [idnumber] => 01148046 
) 
) 

Array2 
(
    [0] => Array 
    (
    [name] => john 
    [surname] => elvis 
    [idnumber] => 01148015 
) 
) 

$difference = array_diff($Array1, $Array2); 
print_r($difference); 
+2

, что это ошибка, которую вы получите ? Каков результат, который вы получите, и каков ожидаемый результат? –

ответ

0

Попробуйте это:

Вы также можете увидеть здесь: http://php.net/manual/en/function.array-diff-assoc.php#111675

array_diff_assoc_recursive($a1, $a2); 

function array_diff_assoc_recursive($array1, $array2) 
{ 
    foreach($array1 as $key => $value) 
    { 
     if(is_array($value)) 
     { 
      if(!isset($array2[$key])) 
      { 
       $difference[$key] = $value; 
      } 
      elseif(!is_array($array2[$key])) 
      { 
       $difference[$key] = $value; 
      } 
      else 
      { 
       $new_diff = array_diff_assoc_recursive($value, $array2[$key]); 
       if($new_diff != FALSE) 
       { 
        $difference[$key] = $new_diff; 
       } 
      } 
     } 
     elseif(!isset($array2[$key]) || $array2[$key] != $value) 
     { 
      $difference[$key] = $value; 
     } 
    } 
    return !isset($difference) ? 0 : $difference; 
} 
+0

Я просто хочу вернуть отличия – ernys

1

Используйте array_intersect() вместо:

$result = array_intersect($array1, $array2); 
+0

array_intersect получает ошибку ... массив для преобразования строк – ernys

+0

Попробуйте следующее: "a1", "b" => "b1", "с" => "c1", "d" => "d1"); $ a2 = array ("e" => "e1", "f" => "f1", "a" => "a1"); $ result = array_diff ($ a1, $ a2); echo "Diff:
"; print_r ($ result); $ result1 = array_intersect ($ a1, $ a2); echo "
InterSect:
"; print_r ($ result1); ?> –

+0

array_map ("unserialize", array_intersect ($ array1, $ array2)) –

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

  • Нет связанных вопросов^_^