Die Differenz von 2 Arrays feststellen mit array_diff_assoc

Joe

Erfahrenes Mitglied
Hallo alle.

Diese Zeile
PHP:
$datadiff=array_diff_assoc($dataintersect, $data1);
Soll eine Abweichung der Strings feststellen. Wenn es keine gibt soll das Skript weiterarbeiten sonst etwas andres tun.

Das Problem ist das ich keine Differenz bekomme.
Die Var_dump sagt jedoch es müsste eine Differenz da sein.
var_dump($dataintersect):
PHP:
array(1) { [0]=>  string(13) "Zeitungsleser" }
var_dump($data1):
PHP:
array(2) { [0]=>  string(13) "Zeitungsleser" [1]=>  string(8) "Baumhaus" }

Das Problem:
var_dump($datadiff):
PHP:
array(0) { }

Wie kann ich nun feststellen ob beide Arrays die selben oder unterschiedliche Strings haben?


Vielen Dank fürs lesen. Bin für jeden Tip dankbar.
 
Hallo,

versuch es mal so:
PHP:
$datadiff = array_diff_assoc($data1, $dataintersect);

Edit:
Die Anordnung der Vergleichsdaten ist nicht egal, deshalb heißt die Funktion auch "array_diff_assoc". In der o.g. Anordnung mit den gegebenen Variablen funktioniert das bei mir.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Joe
Also wenn ich deinen Code nehme und ein bisschen ändere bzw. erweitere:

PHP:
<?php
$dataintersect = array("Zeitungsleser", "Baumhaus");
$data1 = array("Zeitungsleser");

$datadiff = array_diff($dataintersect, $data1);

foreach ($datadiff as $diff) {
	echo $diff ."<br />";
}
echo "<br /><br />";

// oder aber so

if (count($datadiff = array_diff($dataintersect, $data1)) <> 0) {
	echo "Unterschiede vorhanden";
} else {
	echo "Alles gleich";
}
?>

dann bekomme ich "Baumhaus" bzw. die entsprechende Meldung angezeigt.
 
  • Gefällt mir
Reaktionen: Joe
Wenn ich die Beschreibung auf obiger Seite genau lese, dann ist immer das "längere", "größere" Array an erster Stelle!

Wenn ich "Zeitungsleser" mit "Zeitungsleser" und "Baumhaus" vergleiche, habe ich keinen Unterschied da im ersten Array ja nur "Zeitungsleser" zum Verlgeichen da ist und das auch im zweiten Array vorkommt.

Wenn ich aber "Zeitungsleser" und "Baumhaus" mit "Zeitungsleser" verlgeiche, dann wird der "Zeitungsleser" gefunden, das "Baumhaus" jedoch nicht und es wird ein Unterschied festgestellt.

So wie ich es getestet habe funktioniert mein Beispiel wie es soll.

@hela: Wo ist dein zweiter Beitrag hin?
 
Zuletzt bearbeitet:
Und was lernen wir daraus:
Es gibt in deinem Beispiel überhaupt keine Übereinstimmung und keine Übereinstimmung ist ein Unterschied.
 
Es gibt in deinem Beispiel überhaupt keine Übereinstimmung und keine Übereinstimmung ist ein Unterschied.
Das stimmt aber eigentlich nicht. Wie oben von mir geschrieben behauptet die Doku das die Keys verglichen werden. Demnach müsste es eigentlich schon eine Übereinstimmung geben. Also entweder lügt die Doku oder sie haben sich etwas unklar ausgedrückt.
Thx @ hela btw ;)
 
Und was lernen wir daraus:
Es gibt in deinem Beispiel überhaupt keine Übereinstimmung und keine Übereinstimmung ist ein Unterschied.
... gewiss, und so gibt es auch eine Übereinstimmung:
PHP:
<?php
$a1=array(0=>"Zeitungsleser",1=>"Baumhaus");
$a2=array(0=>"Zeitungsleser");
print_r(array_diff_assoc($a1,$a2));
?>
erhälte ich in der Ausgabe:
Code:
Array ( [1] => Baumhaus )
 
Zurück