Dans PHP, array_diff_ukey () est une fonction qui compare les clés pour deux tableaux ou plus et renvoie des parties de ces clés qui n'existent pas dans d'autres tableaux. Cette fonction permet à une fonction de rappel personnalisée d'effectuer des opérations de comparaison personnalisées. Cependant, si l'ordre des paramètres de la fonction de rappel est incorrect, il peut rendre les résultats de comparaison incompatibles avec les attentes.
La fonction array_diff_ukey () est utilisée pour comparer les clés d'un tableau et renvoie celles qui ne sont pas trouvées dans d'autres tableaux. La syntaxe de base est la suivante:
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$ array1 : le premier tableau.
$ array2 : le deuxième tableau.
$ key_compare_func : fonction de rappel personnalisée, en comparant deux touches.
Par exemple, supposons qu'il y ait deux tableaux:
$array1 = [
'apple' => 10,
'banana' => 20,
'cherry' => 30,
];
$array2 = [
'apple' => 10,
'cherry' => 30,
'date' => 40,
];
Vous pouvez utiliser array_diff_ukey () pour comparer leurs clés:
$result = array_diff_ukey($array1, $array2, 'my_comparator');
La fonction de rappel personnalisée My_Comparator nécessite de comparer deux touches pour déterminer si elles sont les mêmes. Habituellement, nous rédigerons une fonction de rappel comme ceci:
function my_comparator($key1, $key2) {
return strcmp($key1, $key2); // Comparez deux clés
}
Cette fonction renvoie:
0 : Si les deux clés sont les mêmes.
Moins de 0 : si $ key1 est inférieur à $ Key2 .
supérieur à 0 : si $ key1 est supérieur à $ key2 .
Dans array_diff_ukey () , l'ordre du paramètre de la fonction de rappel est très important. La signature de la fonction de rappel doit être la fonction ($ key1, $ key2) , où $ key1 est la clé du premier tableau et $ key2 est la clé du deuxième tableau. Si nous inversons l'ordre des paramètres, par exemple, la fonction d'écriture ($ key2, $ key1) , l'ordre de comparaison sera incohérent pendant la comparaison, résultant en un résultat incorrect.
Par exemple:
Supposons que nous ayons mal informé l'ordre de la fonction de rappel et l'avons changé en:
function my_comparator($key2, $key1) {
return strcmp($key2, $key1);
}
La conséquence de cela est que l'ordre des comparaisons est inversé. Lorsque la fonction array_diff_ukey () appelle cette mauvaise fonction de rappel en interne, les clés du tableau seront comparées de manière incorrecte. En conséquence, il peut être incorrectement supposé que certaines clés doivent être identiques ou différentes, renvoyant ainsi des résultats inexacts.
Par exemple, si l'objectif de la fonction array_diff_ukey () est de trouver des clés qui sont dans $ array1 mais pas dans $ array2 , un rappel incorrect peut provoquer les clés qui doivent être maintenues incorrectement supprimées ou les clés qui ne doivent pas être maintenues incorrectement conservées.
Pour éviter cela, nous devons nous assurer que la fonction de rappel a l'ordre correct des paramètres. La fonction de rappel correcte doit être écrite comme ceci:
function my_comparator($key1, $key2) {
return strcmp($key1, $key2); // Comparez deux clés
}
Assurez-vous que $ KEY1 provient du premier tableau et que $ KEY2 provient du deuxième tableau, qui garantit la bonne logique de comparaison.
Lorsque vous utilisez la fonction array_diff_ukey () , l'ordre du paramètre de la fonction de rappel est crucial. Un ordre de paramètres incorrect peut entraîner des résultats incorrects car la logique de comparaison est inversée, affectant le comportement de la fonction. Par conséquent, lors de la rédaction de fonctions de rappel, assurez-vous de vérifier attentivement l'ordre des paramètres pour vous assurer qu'ils respectent l'utilisation prévue de la fonction.