Position actuelle: Accueil> Derniers articles> Comment implémenter la comparaison des clés qui ignore le cas par le biais de la fonction de comparaison

Comment implémenter la comparaison des clés qui ignore le cas par le biais de la fonction de comparaison

M66 2025-06-06

Dans PHP, la fonction Array_Diff_uassoc est utilisée pour comparer deux tableaux, renvoyant toutes les parties du premier tableau différent du deuxième tableau. La principale caractéristique de cette fonction est qu'elle nous permet de fournir une fonction de comparaison personnalisée pour comparer les clés aux tableaux. En combinant des fonctions de comparaison personnalisées, nous pouvons implémenter des comparaisons clés qui ignorent les cartes supérieures et minuscules.

Cet article présentera comment utiliser la fonction Array_Diff_uassoc pour implémenter des comparaisons clés qui ignorent le cas.

1. Introduction à la fonction Array_Diff_uassoc

La syntaxe de la fonction Array_Diff_uassoc est la suivante:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $ array1 et $ array2 : deux tableaux à comparer.

  • $ key_compare_func : fonction de comparaison des touches personnalisées pour comparer deux touches de tableau.

Cette fonction renvoie un tableau contenant des paires de valeurs clés qui existent dans $ array1 mais pas dans $ array2 .

2. Ignorer la comparaison des cas

Pour implémenter des comparaisons de clés qui ignorent le cas, nous devons écrire une fonction de comparaison personnalisée qui convertit les touches en minuscules ou en majuscules uniformes, puis des comparaisons. Voici un exemple de code de l'implémentation:

 <?php

// Fonction de comparaison de clés personnalisée:Ignorer le cas
function case_insensitive_key_compare($key1, $key2) {
    return strcasecmp($key1, $key2);
}

// Définir deux tableaux
$array1 = [
    "first" => "apple",
    "second" => "banana",
    "Third" => "cherry"
];

$array2 = [
    "FIRST" => "apple",
    "second" => "grape",
    "third" => "kiwi"
];

// utiliser array_diff_uassoc Comparaison de deux tableaux,Ignorer le cas
$result = array_diff_uassoc($array1, $array2, 'case_insensitive_key_compare');

// Résultat de sortie
print_r($result);

?>

3. Code d'analyse

  • Fonction de comparaison personnalisée : Case_insensitive_key_compare utilise la fonction StrcasecMP intégrée de PHP, qui compare deux chaînes et ignore le cas. Si les deux chaînes sont égales, StrCasecMP retournera 0 , sinon il renverra une valeur non nulle.

  • Définition du tableau : $ array1 et $ array2 sont les deux tableaux que nous voulons comparer. Notez que leurs noms de clés diffèrent dans le cas.

  • Appelez Array_Diff_uassoc : nous passons Case_insesentitive_key_compare dans array_diff_uassoc en tant que fonction de comparaison personnalisée, implémentant ainsi les comparaisons de clés qui ignorent le cas.

  • Sortie : Enfin, le tableau de résultat $ contient des éléments dans $ array1 dont les valeurs de clé ne correspondent pas aux valeurs de clé $ array2 .

4. Résultat de sortie

Lors de l'exécution du code ci-dessus, la sortie sera la suivante:

 Array
(
    [third] => cherry
)

Dans cet exemple, bien que la clé de $ array1 soit "troisième" et que la clé de $ array2 soit "troisième" , ils sont considérés comme les mêmes car nous utilisons une méthode de comparaison qui ignore le cas, donc "troisième" => "cerise" est conservé dans le tableau de résultat.