In PHP sind Array_Diff_assoc () und Array_intersect_assoc () zwei sehr nützliche Funktionen, die verwendet werden, um den Unterschied und den Schnittpunkt eines Arrays zu finden. Sie vergleichen nicht nur die Werte des Arrays, sondern auch die Schlüsselnamen, daher vergleichen sie Schlüsselwertpaare. In diesem Artikel werden wir lernen, wie diese beiden Funktionen in Kombination verwendet werden, um den Unterschied und die Schnittstelle eines Arrays zu implementieren.
Die Funktion array_diff_assoc () gibt den Unterschied zwischen zwei oder mehr Arrays zurück. Im Gegensatz zu Array_Diff () vergleicht Array_diff_assoc () nicht nur die Werte des Arrays, sondern auch die Schlüsselnamen. Wenn ein Schlüsselname und der entsprechende Wert in mehreren Arrays nicht gleich sind, wird er als Teil des Differenzsatzes betrachtet.
Funktionsprototyp :
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
Beispielcode :
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 1,
"b" => 3,
"c" => 3
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
Ausgabe :
Array
(
[b] => 2
)
Im obigen Beispiel gibt Array_Diff_assoc () nur den Wert 2 zurück, der dem Schlüsselnamen "B" entspricht, da er in $ array1 und $ array2 unterschiedlich ist.
Die Funktion array_intersect_assoc () wird verwendet, um den Schnittpunkt von zwei oder mehr Arrays zurückzugeben. Im Gegensatz zu Array_intersect () vergleichen auch Array_intersect_assoc () die Schlüsselnamen. In der Kreuzung werden nur Elemente mit demselben Wert und Schlüsselnamen angezeigt.
Funktionsprototyp :
array_intersect_assoc(array $array1, array $array2, array ...$arrays): array
Beispielcode :
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 1,
"b" => 2,
"d" => 4
];
$result = array_intersect_assoc($array1, $array2);
print_r($result);
Ausgabe :
Array
(
[a] => 1
[b] => 2
)
In diesem Beispiel gibt Array_intersect_assoc () den Teil zurück, in dem der Schlüsselname und der entsprechende Wert gleich sind, d. H. "A" => 1 und "B" => 2 .
Angenommen, Sie müssen den Schnittpunkt und die Differenz zu zwei Arrays finden, können Sie Array_Diff_assoc () und Array_intersect_assoc () verwenden, um dieses Ziel zu erreichen.
Beispielcode :
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 1,
"b" => 3,
"d" => 4
];
// Rechenübergang
$intersect = array_intersect_assoc($array1, $array2);
// Berechnen Sie den Differenzsatz
$diff = array_diff_assoc($array1, $array2);
echo "Überschneidung:\n";
print_r($intersect);
echo "Unterschied:\n";
print_r($diff);
Ausgabe :
Überschneidung:
Array
(
[a] => 1
)
Unterschied:
Array
(
[b] => 2
[c] => 3
)
In diesem Beispiel enthält der Schnittpunkt nur "a" => 1 , und die Differenz enthält Elemente mit unterschiedlichen Schlüsselnamen und entsprechenden Werten, d. H. "B" => 2 und "C" => 3 .
Die Verwendung von Array_Diff_assoc () und Array_intersect_assoc () kann sehr bequem sein, Arrays mit Schlüsselwertpaaren zu verarbeiten, insbesondere wenn es erforderlich ist, Schlüsselwertepaare von Arrays genau zu vergleichen. Hier sind einige gemeinsame Nutzungsszenarien:
Vergleichen Sie zwei Konfigurationsdateien, um deren gemeinsame Konfigurationselemente und unterschiedliche Konfigurationselemente zu finden.
Vergleichen Sie die beiden Datensätze, finden Sie ihre Schnitt- und Differenzsätze und synchronisieren oder fusionieren Sie die Daten.
Stellen Sie bei der Arbeit mit mehrdimensionalen Arrays sicher, dass nicht nur die Werte des Arrays, sondern auch die Schlüsselnamen.
Durch die Verwendung von array_diff_assoc () und array_intersect_assoc () können Sie die Differenz- und Kreuzungsvorgänge eines Arrays problemlos verarbeiten. Es ist zu beachten, dass beide Funktionen Schlüsselnamen und entsprechende Werte vergleichen können, was sie beim Umgang mit Arrays mit zugehörigen Schlüssel sehr nützlich macht.