Dans PHP, array_diff_ukey () est une fonction très utile qui peut être utilisée pour comparer les noms de clés de deux tableaux et renvoyer ces noms de clés dans le premier tableau qui ne sont pas dans le deuxième tableau. Cette fonction nous convient très bien lorsque nous devons découvrir les différences dans les noms de clés de deux tableaux, en particulier lorsque les noms de clés sont plus compliqués, nous pouvons les juger via une fonction de comparaison personnalisée.
Le prototype de la fonction array_diff_ukey () est le suivant:
array array_diff_ukey ( array $array1 , array $array2 , callable $key_compare_func )
$ Array1 : Le premier tableau à comparer.
$ Array2 : Le deuxième tableau à comparer avec le premier tableau.
$ key_compare_func : une fonction de comparaison personnalisée pour comparer deux noms de clés. Cette fonction prend deux noms de clés comme paramètres et doit renvoyer un entier représentant le résultat de la comparaison.
Examinons un exemple spécifique pour montrer comment utiliser la fonction array_diff_ukey () pour trouver la différence de noms de clés entre deux tableaux.
<?php
// Définir deux tableaux
$array1 = [
'apple' => 1,
'banana' => 2,
'cherry' => 3,
];
$array2 = [
'banana' => 4,
'date' => 5,
'fig' => 6,
];
// Fonctions de comparaison personnalisées
function key_compare_func($key1, $key2) {
// Comparez directement si les noms de clés sont égaux
return strcmp($key1, $key2);
}
// utiliser array_diff_ukey() Comparaison des noms clés de deux tableaux
$result = array_diff_ukey($array1, $array2, 'key_compare_func');
// Résultat de sortie
print_r($result);
?>
Array
(
[apple] => 1
[cherry] => 3
)
Dans l'exemple ci-dessus, nous avons deux tableaux $ array1 et $ array2 , où $ array1 contient des noms clés 'Apple' , 'Banana' et 'Cherry' , et $ array2 contient des noms clés 'Banana' , 'Date' et 'Fig' . En appelant array_diff_ukey () , nous passons dans une fonction de comparaison personnalisée key_compare_func , qui est utilisée pour comparer si les deux noms de clés sont les mêmes. Enfin, la fonction renvoie un nouveau tableau contenant les noms de clés «Apple» et «Cherry» dans $ array1 , car ces deux noms de clés n'apparaissent pas dans $ array2 .
La puissance de array_diff_ukey () est qu'elle prend en charge les fonctions de comparaison personnalisées. Cela signifie que nous pouvons non seulement effectuer des comparaisons de noms de clés simples, mais également écrire une logique de comparaison complexe en fonction de nos propres besoins. Par exemple, si nous devons ignorer les différences de cas dans les noms de clés, nous pouvons le faire dans la fonction de comparaison.
<?php
// Définir deux tableaux
$array1 = [
'Apple' => 1,
'banana' => 2,
'cherry' => 3,
];
$array2 = [
'apple' => 4,
'Date' => 5,
'fig' => 6,
];
// Fonctions de comparaison personnalisées,Ignorer le cas
function case_insensitive_key_compare_func($key1, $key2) {
return strcasecmp($key1, $key2);
}
// utiliser array_diff_ukey() Comparaison des noms clés de deux tableaux
$result = array_diff_ukey($array1, $array2, 'case_insensitive_key_compare_func');
// Résultat de sortie
print_r($result);
?>
Array
(
[banana] => 2
[cherry] => 3
)
Dans cet exemple, bien que les noms «Apple» dans $ array1 et «Apple» dans $ array2 soient enveloppés différemment, car nous utilisons la fonction StrcasecMP pour comparaison, PHP ignore les différences de cas et les considère comme les mêmes noms de clé. Par conséquent, le résultat final ne renverra que les deux noms clés «banane» et «cerise» , car «Apple» est considéré comme ayant été trouvé dans $ array2 .
En utilisant la fonction array_diff_ukey () , nous pouvons facilement trouver la différence de noms de clés entre deux tableaux. Cette fonction est très puissante et prend en charge la logique de comparaison personnalisée, il peut donc faire face à divers besoins de comparaison complexes. Qu'il s'agisse d'une comparaison de noms de clé simple ou d'une comparaison qui nécessite d'ignorer la partie supérieure et les minuscules, array_diff_ukey () peut être facilement gérée.