En PHP, il est une opération courante de comparer les noms clés d'un tableau et de trouver leurs différences. Utilisez la fonction array_diff_key () intégrée pour comparer les différences de nom de clé entre deux tableaux, mais si nous voulons avoir un contrôle plus détaillé sur la logique de comparaison des noms de clés, nous pouvons le faire via une fonction de rappel personnalisée. Cette méthode est très flexible et peut être personnalisée en fonction des besoins spécifiques.
Ensuite, nous montrerons comment comparer les noms de clés du tableau et trouver la différence via une fonction de rappel personnalisée.
Définition d'une fonction de rappel personnalisée : Tout d'abord, nous devons définir une fonction de rappel qui compare les noms de clés du tableau.
Utilisez la fonction array_filter () : nous pouvons utiliser array_filter () pour filtrer le tableau pour nous assurer que seuls les noms de clés qui répondent aux critères sont conservés.
Utilisez array_diff_key () pour comparaison : Selon les exigences, nous pouvons faire une comparaison différentielle des noms clés du tableau.
Voici un exemple complet montrant comment comparer les noms de clés du tableau et trouver des différences par les fonctions de rappel personnalisées.
<?php
// Exemple de tableau1
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3,
"d" => 4
];
// Exemple de tableau2
$array2 = [
"a" => 1,
"b" => 2,
"e" => 5,
"f" => 6
];
// Fonction de rappel personnalisée:Comparez si les noms de clés sont les mêmes
function customKeyCompare($key1, $key2) {
// Ici, vous pouvez ajouter votre propre logique de comparaison
// Par exemple,Voici une comparaison simple insensible à la casse
return strtolower($key1) === strtolower($key2);
}
// Fonctions personnalisées:Comparez les noms clés de deux tableaux et trouvez la différence
function compareArrayKeys($array1, $array2, $callback) {
// Obtenez le nom clé du tableau
$keys1 = array_keys($array1);
$keys2 = array_keys($array2);
// Filtrez les noms de clés en deux tableaux,Renvoie différents noms de clés
$diffKeys = array_filter($keys1, function($key) use ($keys2, $callback) {
foreach ($keys2 as $key2) {
if ($callback($key, $key2)) {
return false; // Sauter si les noms de clés sont les mêmes
}
}
return true; // sinon,Renvoie le nom de la clé de différence
});
return $diffKeys;
}
// Obtenez la différence de nom de clé du tableau
$diffKeys = compareArrayKeys($array1, $array2, "customKeyCompare");
// Imprimer le nom de la clé de différence
echo "Nom de clé de différence:\n";
print_r($diffKeys);
?>
Nous définissons une fonction de rappel personnalisée simple CustomKeyCompare () qui compare si les deux noms de clés sont les mêmes. Vous pouvez modifier la logique de comparaison de la fonction de rappel selon les besoins. Par exemple, la comparaison dans le code ci-dessus ignore le cas.
La fonction comparableaRayKeys () est utilisée pour comparer les noms de clés de deux tableaux et renvoyer les noms de clés qui existent dans le premier tableau mais pas dans le deuxième tableau.
Enfin, le nom de clé de Array1 est traversé via array_filter () , et le nom de clé de Array2 est comparé un par un, et le nom de clé de la différence est renvoyé.
Nom de clé de différence:
Array
(
[2] => c
[3] => d
)
Dans cet exemple, C et D sont des noms clés qui sont présents dans le premier tableau Array1 et non dans le deuxième tableau Array2 .
Grâce à des fonctions de rappel personnalisées, nous pouvons comparer les noms de clés de deux tableaux de manière plus flexible et gérer la logique de comparaison des noms de clés en fonction des besoins spécifiques. Cette approche convient particulièrement aux situations où les fonctions intégrées ne peuvent pas répondre aux besoins spécifiques.
Cette méthode est une astuce très pratique si vous devez comparer différents types de noms de clés de tableau.