2016-05-30 6 views
0

Ich habe zwei multidimensionale Arrays, die ich vergleichen möchte. So sehen sie aus. Ich möchte den Unterschied machen. Ich habe Array Diff versucht, aber es scheint nicht zu funktionieren. Heres mein CodeWie kann ich zwei Arrays in PHP vergleichen

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

was ist der Fehler, den Sie bekommen ? Was ist das Ergebnis und was ist das erwartete Ergebnis? –

Antwort

0

Try this:

Sie auch hier sehen können: 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

ich möchte nur die Unterschiede zurückgeben – ernys

1

Verwenden array_intersect() statt:

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

array_intersect wird Fehler ... Array zu String-Konvertierung – ernys

+0

Versuchen Sie dies: "a1", "b" => "b1", "c" => "c1", "d" => "d1"); $ a2 = Array ("e" => "e1", "f" => "f1", "a" => "a1"); $ result = array_diff ($ a1, $ a2); Echo "Diff:
"; print_r ($ Ergebnis); $ result1 = array_intersect ($ a1, $ a2); Echo "
InterSekt:
"; print_r ($ ergebnis1); ?> –

+0

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