Ab und zu kommt es vor, dass man mit PHP Arrays miteinander vergleichen muss. Das ist im Normalfall mit
<?php array_diff($array1, $array2); ?>
ganz einfach gemacht. Allerdings funktioniert diese Methode nur mit einfachen Arrays.
Wer Arrays gern rekursiv vergleichen möchte, der kann gern auf diese Funktion zurück greifen:
<?php
function array_diff_recursive($array1 = array(), $array2 = array()) {
$return = array();
foreach($array1 as $key=>$value) {
if(array_key_exists($key, $array2)) {
if(is_array($value)) {
$diffArray = array_diff_recursive($value, $array2[$key]);
if(count($diffArray)) {
$return[$key] = $diffArray;
}
} else {
if($value != $array2[$key]) {
$return[$key] = array("a1"=>$value, "a2"=>$array2[$key]);
}
}
unset($array2[$key]);
} else {
$return[$key] = array("a1"=>$value, "a2"=>'');
}
}
foreach($array2 as $key=>$value) {
$return[$key] = array("a1"=>'', "a2"=>$value, "diff"=>$value?'exists':'diff');
}
return $return;
}
?>
Aufrufen könnt ihr die Funktion dann mit:
<?php array_diff_recursive($array1, $array2); ?>
Kommentieren