Dans PHP, array_diff_ukey () et array_diff_key () sont des fonctions utilisées pour comparer les noms de clés des tableaux et retourner les différences de noms de clés. Bien que les fonctions de ces deux fonctions soient très similaires, il existe des différences significatives dans la façon dont elles sont utilisées. Cet article expliquera les différences entre ces deux fonctions en détail et montrera leur application dans le développement réel.
La fonction array_diff_key () est utilisée pour comparer les noms de clés de deux tableaux ou plus, et renvoie les paires de noms de clé et de valeur de clé qui existent dans le premier tableau mais pas dans d'autres tableaux. Autrement dit, il renvoie tous les éléments dont les noms clés n'existent pas dans d'autres tableaux.
array_diff_key(array $array1, array $array2, array ...$arrays): array
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'b' => 5,
'd' => 6
];
$result = array_diff_key($array1, $array2);
print_r($result);
Array
(
[a] => 1
[c] => 3
)
Dans cet exemple, la fonction array_diff_key () renvoie une paire de valeurs clés qui existe dans le Array $ array1 mais n'existe pas dans $ array2 .
La fonction array_diff_ukey () est similaire à array_diff_key () , mais elle permet à l'utilisateur de passer une fonction de rappel pour comparer les noms de clés. Cela offre aux utilisateurs plus de flexibilité, en particulier lorsque des règles de comparaison de nom de clé personnalisées sont requises.
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$array1 = [
'a' => 1,
'b' => 2,
'c' => 3
];
$array2 = [
'A' => 5,
'B' => 6
];
// Fonction de comparaison de nom de clé personnalisé
$key_compare_func = function ($key1, $key2) {
return strtolower($key1) <=> strtolower($key2);
};
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
Array
(
[c] => 3
)
Dans cet exemple, array_diff_ukey () compare les noms de clés basés sur une fonction de rappel personnalisée. La fonction de rappel utilise Strtolower pour comparer le nom de la clé aux minuscules, et le résultat ne renvoie que l'élément Cley Name C car il n'a pas le même nom de clé minuscule dans $ array2 .
Méthode de comparaison du nom de clé:
array_diff_key () utilise directement la méthode de comparaison par défaut de PHP pour comparer les noms de clés du tableau.
array_diff_ukey () permet aux utilisateurs de personnaliser les règles de comparaison pour les noms de clés et peut implémenter les comparaisons de nom de clé personnalisées en passant une fonction de rappel.
flexibilité:
array_diff_key () n'autorise pas les règles de comparaison de nom de clé personnalisées, sa comparaison est basée sur la comparaison par défaut de PHP.
array_diff_ukey () est plus flexible et vous pouvez définir une méthode de comparaison de nom de clé personnalisé via une fonction de rappel.
Scénarios d'application:
array_diff_key () convient aux cas où les noms de clés sont directement égaux.
Array_Diff_ukey () convient aux situations où les noms de clés nécessitent des règles de comparaison personnalisées, telles que l'ignorer les caractéristiques supérieures et inférieures, en comparant en fonction de certains algorithmes, etc.
Dans le développement réel, Array_Diff_Key () est plus couramment utilisé car il est simple à utiliser et convient aux scénarios de comparaison des tableaux les plus courants. array_diff_ukey () convient aux besoins spéciaux, tels que l'ignorer le cas des noms de clés ou l'exécution d'autres opérations de comparaison personnalisées.
Supposons que vous ayez deux tableaux dont les noms de clés sont en fait les mêmes, mais un tableau a la majuscule et l'autre est minuscule. Dans ce cas, vous pouvez utiliser array_diff_ukey () pour comparer leurs noms de clés, en ignorant le cas.
$array1 = [
'apple' => 1,
'banana' => 2
];
$array2 = [
'APPLE' => 3,
'BANANA' => 4
];
// Ignorer la comparaison des cas
$key_compare_func = function ($key1, $key2) {
return strtolower($key1) <=> strtolower($key2);
};
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
Array
(
)
Dans cet exemple, comme les noms de clés Apple et Apple sont considérés comme les mêmes, le résultat renvoie un tableau vide, indiquant qu'il n'y a pas de différence dans les noms clés des deux tableaux.
array_diff_key () est un moyen simple et direct de comparer les noms de clés du tableau, adaptés aux différences régulières de noms de clé.
array_diff_ukey () offre plus de flexibilité, permettant des règles de comparaison des noms de clés personnalisés, adaptés aux scénarios où une logique de comparaison spéciale est requise.
La fonction à choisir dépend de vos besoins. Si vous avez juste besoin de comparer l'égalité directe des noms de clés, array_diff_key () suffit. Si vous avez besoin de règles de comparaison plus complexes, array_diff_ukey () sera un meilleur choix.