Multidimensionale Arrays mit PHP vergleichen

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); ?>
15.01.2019 18:43 • PHP



Kommentieren

Absenden


Ihre E-Mail-Adresse wird aus datenschutzrechtlichen Gründen nicht angezeigt. Erforderliche Felder sind markiert *.

Christian März • web development • Köln
Christian März • web development • Köln
Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload Preload