Position actuelle: Accueil> Derniers articles> Que se passe-t-il s'il existe des touches en double dans le tableau lors de l'utilisation de la fonction Array_Diff_Key? Quel est le résultat?

Que se passe-t-il s'il existe des touches en double dans le tableau lors de l'utilisation de la fonction Array_Diff_Key? Quel est le résultat?

M66 2025-06-06

Dans PHP, la fonction array_diff_key () est utilisée pour comparer deux tableaux ou plus et renvoyer un tableau contenant des noms de clés qui existent dans le premier tableau mais pas dans d'autres tableaux. Comment fonctionne la fonction si les noms de clés sont répétés? Jetons un coup d'œil à la situation spécifique.

Fonction Introduction

La syntaxe de base de la fonction array_diff_key () est la suivante:

 array_diff_key(array $array1, array $array2, array ...$arrays): array
  • $ Array1 : Le premier tableau à comparer.

  • $ array2, ... $ Arrays : Autres tableaux qui doivent être comparés au premier tableau.

Cette fonction renvoie un tableau contenant les noms de clés présents dans le premier tableau $ array1 , tandis que les éléments de ces noms de clés ne peuvent être trouvés dans le tableau suivant $ array2 , ... $ arrays .

Problème de duplication de clé lors de l'utilisation de Array_Diff_Key ()

Le comportement de array_diff_key () peut être surprenant lorsqu'il y a des clés en double dans le tableau. Les clés du tableau dans PHP sont uniques, et même si vous spécifiez la même clé pour un tableau, seule la dernière paire de valeurs clés sera conservée à la fin.

Exemple 1: Il y a des clés en double dans le tableau

 $array1 = [
    "a" => 1,
    "b" => 2,
    "c" => 3,
    "a" => 4  // Répéter les clés
];

$array2 = [
    "a" => 100,
    "b" => 200
];

$result = array_diff_key($array1, $array2);
print_r($result);

Dans cet exemple, la clé moyenne de $ array1 "A" est définie deux fois, en commençant par 1 puis remplacée par 4 . Donc $ array1 n'a en fait qu'une seule clé "a" => 4 .

Après avoir exécuté le code ci-dessus, la sortie sera:

 Array
(
    [c] => 3
)

array_diff_key () comparera array $ array1 et $ array2 et renverra l'élément correspondant au nom de clé "C" car il n'y a pas de clé "C" dans $ array2 .

Exemple 2: Comparaison de plusieurs tableaux

 $array1 = [
    "a" => 1,
    "b" => 2,
    "c" => 3,
    "a" => 4  // Répéter les clés
];

$array2 = [
    "a" => 100,
    "b" => 200
];

$array3 = [
    "c" => 300,
    "d" => 400
];

$result = array_diff_key($array1, $array2, $array3);
print_r($result);

Dans cet exemple, la clé "A" dans $ array1 est définie à plusieurs reprises comme 1 et 4 , mais sera finalement conservée comme 4 . La fonction comparera Array1 , Array2 et Array3 , et les éléments de retour correspondant au nom de clé "D" parce que "D" est unique dans $ array1 et non dans d'autres tableaux.

Le résultat de sortie est le suivant:

 Array
(
    [d] => 400
)

Analyse des résultats

  • Effets des touches en double : Lorsqu'il y a des touches en double dans le tableau, PHP écrasera automatiquement les paires de valeurs clés précédentes, ne laissant que la dernière paire de valeurs clés. Par conséquent, array_diff_key () sera comparé par le nom de clé final, ignorant la valeur des doublons intermédiaires.

  • L'unicité des noms de clés : array_diff_key () s'appuie sur l'unicité des noms de clés pour comparaison. Si une clé dans le tableau existe dans plusieurs tableaux, la clé réservée finale sera basée sur la valeur de la clé dans la dernière occurrence du tableau.

Résumer

Lorsque vous utilisez la fonction array_diff_key () , les touches en double dans le tableau seront automatiquement dédupliquées, et seule la dernière paire de valeurs clés sera valide. Si vous devez conserver plusieurs clés en double, envisagez d'utiliser d'autres méthodes, telles que le tableau associatif des paires de valeurs clés comme valeurs.

J'espère que cet article vous aidera à mieux comprendre le comportement de la fonction array_diff_key () , en particulier lorsqu'il s'agit de clés répétées dans un tableau.

Remplacement du nom de domaine URL en code

Veuillez noter que l'exemple de code dans l'article n'implique pas de URL spécifiques, mais si une utilisation similaire de l'URL est impliquée dans le processus de développement réel, vous pouvez remplacer le nom de domaine dans l'URL par M66.net au besoin, par exemple: