In PHP ist die Funktion array_diff_ukey ein sehr praktisches Tool, das die Schlüssel von zwei assoziativen Arrays vergleichen und die Unterschiede basierend auf benutzerdefinierten Schlüsselvergleichsfunktionen ermitteln kann. Durch diese Funktion können wir herausfinden, welche Schlüssel im ersten Array existiert, aber im zweiten Array nicht existieren, oder welche Schlüsselwerte unterschiedlich sind. Als nächstes werden wir uns mit dieser Funktion befassen, um die Unterschiede zwischen den beiden assoziativen Array -Strukturen zu vergleichen.
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
Parameterbeschreibung :
$ array1 : Das erste Array als Benchmark für den Vergleich.
$ array2 : Das zweite Array im Vergleich zum ersten Array.
$ key_compare_func : Eine benutzerdefinierte Rückruffunktion zum Vergleich von Tasten von zwei Arrays. Die Funktion muss zurückkehren:
Weniger als 0 bedeutet, dass der erste Schlüssel geringer ist als der zweite Schlüssel.
Gleich 0 bedeutet, dass die beiden Bindungen gleich sind.
Mehr als 0 bedeutet, dass der erste Schlüssel größer ist als der zweite Schlüssel.
Rückgabewert :
Gibt ein Array zurück, das Schlüsselwertpaare enthält, die sich in $ array1 , jedoch nicht in $ array2 befinden.
Schauen wir uns ein einfaches Beispiel für die Verwendung von Array_Diff_Ukey an, um die Unterschiede zwischen zwei assoziativen Arrays zu vergleichen.
<?php
$array1 = [
"apple" => "red",
"banana" => "yellow",
"cherry" => "red",
"grape" => "purple"
];
$array2 = [
"banana" => "yellow",
"cherry" => "red",
"melon" => "green"
];
// Benutzerdefinierte Schlüsselvergleichsfunktion
$key_compare_func = function($key1, $key2) {
return strcmp($key1, $key2); // Vergleich von zwei Tasten mit der String
};
// Vergleich der wichtigsten Unterschiede zwischen zwei Arrays
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
Ausgangsergebnis :
Array
(
[apple] => red
[grape] => purple
)
In diesem Beispiel vergleicht Array_Diff_Ukey die Schlüssel in $ array1 und $ array2 , die Schlüsselwertpaare ausgeben, die in $ array1, jedoch nicht in $ array2 , vorhanden sind. Wie Sie sehen können, gibt es in $ Array2 nicht "Apple" und "Trauben", sodass sie in das Ergebnis enthalten sind.
Eine leistungsstarke Funktion der Funktion array_diff_ukey ist, dass Sie steuern können, wie Tasten durch benutzerdefinierte Schlüsselvergleichsfunktionen verglichen werden. Im obigen Beispiel haben wir Strcmp () zum String -Vergleich verwendet. Sie können jedoch andere Möglichkeiten verwenden, um nach den tatsächlichen Anforderungen zu vergleichen, wie z. B. nach numerischer Größe, Datumsformat usw.
Hier ist ein weiteres Beispiel mit dem Zahlengrößenvergleichsschlüssel:
<?php
$array1 = [
1 => "one",
2 => "two",
3 => "three",
5 => "five"
];
$array2 = [
2 => "two",
3 => "three",
4 => "four"
];
// Benutzerdefinierte Schlüsselvergleichsfunktion
$key_compare_func = function($key1, $key2) {
return $key1 - $key2; // Vergleiche nach Zahlengröße
};
// Vergleich der wichtigsten Unterschiede zwischen zwei Arrays
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
Ausgangsergebnis :
Array
(
[1] => one
[5] => five
)
In diesem Beispiel verwendet Array_Diff_Ukey eine numerische Vergleichsfunktion, um Tasten zu vergleichen, und das Ergebnis zeigt einen Schlüssel, der in $ array1 , jedoch nicht in $ array2 ist.
Die Funktion array_diff_ukey ist sehr geeignet für Szenarien, in denen Unterschiede nach Array -Tasten verglichen werden müssen. Zum Beispiel:
Finden Sie Schlüssel, die nicht in einem anderen Array erscheinen : Wenn Sie zwei Arrays basierend auf Tasten vergleichen müssen, können Sie diese Funktion verwenden, um Array -Elemente zu finden, die nicht denselben Schlüssel teilen.
Vergleichen Sie Schlüssel nach benutzerdefinierten Regeln : Wenn der Schlüssel eine Zeichenfolge oder eine Nummer ist, können Sie benutzerdefinierte Vergleichsregeln verwenden, um die Art und Weise zu steuern, wie die Unterschiede flexibler beurteilen.
Angenommen, Sie müssen Array -Schlüssel vergleichen, wenn Sie Daten enthalten, die URLs enthalten, und den Domänennamen in der URL durch m66.net ersetzen möchten, können Sie dies tun:
<?php
$array1 = [
"https://www.example1.com" => "site1",
"https://www.example2.com" => "site2"
];
$array2 = [
"https://www.example2.com" => "site2",
"https://www.example3.com" => "site3"
];
// Benutzerdefinierte Schlüsselvergleichsfunktion,ersetzen URL Domain -Name
$key_compare_func = function($key1, $key2) {
$key1 = preg_replace('/^https?:\/\/([^\/]+)(.*)$/', 'https://m66.net$2', $key1);
$key2 = preg_replace('/^https?:\/\/([^\/]+)(.*)$/', 'https://m66.net$2', $key2);
return strcmp($key1, $key2); // Vergleich von Modified URL
};
// Vergleich der wichtigsten Unterschiede zwischen zwei Arrays
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
In diesem Beispiel ersetzen wir den Domänennamen in der URL durch m66.net durch die Funktion preg_replace und vergleichen. Dieser Ansatz ist sehr geeignet für Szenarien, in denen unterschiedliche Domain -Namen oder URL -Vergleiche mit unterschiedlichen Pfaden vorhanden sind, im Wesentlichen gleich.
Das obige ist eine grundlegende Einführung und einige praktische Beispiele für die Verwendung von PHP -Funktion von Array_Diff_Ukey , um die Unterschiede zwischen zwei assoziativen Array -Strukturen zu vergleichen. Durch benutzerdefinierte Schlüsselvergleichsfunktionen können Sie den Vergleichsprozess sehr flexibel steuern und verschiedene Funktionen entsprechend den tatsächlichen Anforderungen implementieren.