2016-05-30 178 views
0

我有兩個我想比較的多維數組。這是他們的樣子。我想得到不同。我嘗試了數組比較,但它似乎不工作。繼承人是我的代碼我如何比較兩個數組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

試試這個:<?php $ a1 = array(「a」=>「a1」,「b」=>「b1」, 「C」=> 「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)) –