In PHP ist es eine übliche Operation, die Schlüsselnamen eines Arrays zu vergleichen und ihre Unterschiede zu finden. Verwenden Sie die integrierte Funktion in Array_Diff_key (), um die Differenzen der Schlüsselnamen zwischen zwei Arrays zu vergleichen. Wenn wir jedoch eine detailliertere Kontrolle über die Vergleichslogik der Schlüsselnamen haben möchten, können wir dies über eine benutzerdefinierte Rückruffunktion tun. Diese Methode ist sehr flexibel und kann nach bestimmten Bedürfnissen angepasst werden.
Als nächstes zeigen wir, wie Sie Arrayschlüsselnamen vergleichen und den Unterschied über eine benutzerdefinierte Rückruffunktion finden.
Definieren einer benutzerdefinierten Rückruffunktion : Erstens müssen wir eine Rückruffunktion definieren, die die Schlüsselnamen im Array vergleicht.
Verwenden Sie die Funktion array_filter () : Wir können Array_filter () verwenden, um das Array zu filtern, um sicherzustellen, dass nur die Schlüsselnamen, die den Kriterien erfüllen, erhalten bleiben.
Verwenden Sie Array_Diff_key () zum Vergleich : Gemäß den Anforderungen können wir einen unterschiedlichen Vergleich der Schlüsselnamen des Arrays durchführen.
Hier ist ein vollständiges Beispiel, das zeigt, wie Sie Arrayschlüsselnamen vergleichen und Unterschiede nach benutzerdefinierten Rückruffunktionen finden.
<?php
// Beispielarray1
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3,
"d" => 4
];
// Beispielarray2
$array2 = [
"a" => 1,
"b" => 2,
"e" => 5,
"f" => 6
];
// Benutzerdefinierte Rückruffunktion:Vergleichen Sie, ob die Schlüsselnamen gleich sind
function customKeyCompare($key1, $key2) {
// Hier können Sie Ihre eigene Vergleichslogik hinzufügen
// Zum Beispiel,Hier ist ein einfacher Fall-unempfindlicher Vergleich
return strtolower($key1) === strtolower($key2);
}
// Benutzerdefinierte Funktionen:Vergleichen Sie die Schlüsselnamen von zwei Arrays und finden Sie den Unterschied
function compareArrayKeys($array1, $array2, $callback) {
// Holen Sie sich den Schlüsselnamen des Arrays
$keys1 = array_keys($array1);
$keys2 = array_keys($array2);
// Filtern Sie die Schlüsselnamen in zwei Arrays heraus,Gibt verschiedene Schlüsselnamen zurück
$diffKeys = array_filter($keys1, function($key) use ($keys2, $callback) {
foreach ($keys2 as $key2) {
if ($callback($key, $key2)) {
return false; // Überspringen Sie, wenn die Schlüsselnamen gleich sind
}
}
return true; // ansonsten,Geben Sie den Differenzschlüsselnamen zurück
});
return $diffKeys;
}
// Holen Sie sich den Unterschied zwischen Arrayschlüsselname
$diffKeys = compareArrayKeys($array1, $array2, "customKeyCompare");
// Drucken Sie den Differenzschlüsselnamen
echo "Differenzschlüsselname:\n";
print_r($diffKeys);
?>
Wir definieren eine einfache benutzerdefinierte Rückruffunktion CustomKeyCompare () , die vergleicht, ob die beiden Schlüsselnamen gleich sind. Sie können die Vergleichslogik der Rückruffunktion nach Bedarf ändern. Zum Beispiel ignoriert der Vergleich im obigen Code den Fall.
Die Funktion vergleicheRearraykeys () wird verwendet, um die Schlüsselnamen zweier Arrays zu vergleichen und die im ersten Array vorhandenen Schlüsselnamen zurückzugeben, jedoch nicht im zweiten Array.
Schließlich wird der Schlüsselname von Array1 durch Array_Filter () durchquert, und der Schlüsselname in Array2 wird einzeln verglichen, und der Schlüsselname der Differenz wird zurückgegeben.
Differenzschlüsselname:
Array
(
[2] => c
[3] => d
)
In diesem Beispiel sind C und D Schlüsselnamen, die im ersten Array -Array1 und nicht im zweiten Array -Array2 vorhanden sind.
Durch benutzerdefinierte Rückruffunktionen können wir die Schlüsselnamen von zwei Arrays flexibler vergleichen und die Vergleichslogik der Schlüsselnamen entsprechend den spezifischen Anforderungen verarbeiten. Dieser Ansatz eignet sich besonders für Situationen, in denen integrierte Funktionen den bestimmten Anforderungen nicht erfüllen können.
Diese Methode ist ein sehr praktischer Trick, wenn Sie verschiedene Arten von Arrayschlüsselnamen vergleichen müssen.