Position actuelle: Accueil> Derniers articles> Quelle est la différence entre array_diff_key () et array_diff_assoc ()? Quels sont leurs scénarios d'utilisation?

Quelle est la différence entre array_diff_key () et array_diff_assoc ()? Quels sont leurs scénarios d'utilisation?

M66 2025-06-06

Dans PHP, array_diff_key () et array_diff_assoc () sont tous deux des fonctions utilisées pour comparer les tableaux, mais leurs méthodes de comparaison sont évidemment différentes de ces scénarios applicables. Cet article expliquera les différences entre ces deux fonctions en détail et discutera de leurs scénarios d'utilisation respectifs.

1. Fonction array_diff_key ()

array_diff_key () est utilisé pour comparer les noms de clés (touches) de deux tableaux ou plus et renvoie les paires de valeurs clés qui existent dans le premier tableau mais pas dans d'autres tableaux.

grammaire

 array_diff_key(array $array1, array $array2, array ...$arrays): array

Description du paramètre

  • $ array1 : le premier tableau (tableau de référence).

  • $ array2, ... $ Arrays : le tableau à comparer avec le premier tableau.

Exemple

 $array1 = [
    "a" => 1,
    "b" => 2,
    "c" => 3
];

$array2 = [
    "a" => 4,
    "c" => 5
];

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

Résultat de sortie

 Array
(
    [b] => 2
)

Dans cet exemple, array_diff_key () compare les noms de clés de deux tableaux. Les résultats renvoyés sont ces paires de valeurs clés qui sont dans $ array1 mais pas dans $ array2 .

2. Fonction array_diff_assoc ()

array_diff_assoc () est utilisé pour comparer les noms et valeurs de clé (clé et valeur) de deux tableaux ou plus, renvoyant des paires de valeurs clés qui existent dans le premier tableau mais pas dans d'autres tableaux. Contrairement à array_diff_key () , il compare non seulement les noms de clés, mais compare également les valeurs correspondant aux clés.

grammaire

 array_diff_assoc(array $array1, array $array2, array ...$arrays): array

Description du paramètre

  • $ array1 : le premier tableau (tableau de référence).

  • $ array2, ... $ Arrays : le tableau à comparer avec le premier tableau.

Exemple

 $array1 = [
    "a" => 1,
    "b" => 2,
    "c" => 3
];

$array2 = [
    "a" => 4,
    "c" => 3
];

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

Résultat de sortie

 Array
(
    [a] => 1
    [b] => 2
)

Dans cet exemple, array_diff_assoc () compare les noms et valeurs de clés de $ array1 et $ array2 . Les résultats renvoyés sont les paires de valeurs clés qui ont dans $ array1 mais n'ont pas exactement le même nom de clé et valeur dans $ array2 .

3. Différence entre array_diff_key () et array_diff_assoc ()

Nom de clé vs valeur clé

  • array_diff_key () compare uniquement les noms de clés et ignore les valeurs correspondantes de la clé.

  • array_diff_assoc () compare les noms et valeurs de clés en même temps. Ce n'est que lorsque les noms et valeurs de clés seront différents qu'il sera considéré comme différent.

Utiliser des scénarios

  • array_diff_key () convient aux scénarios où vous vous souciez uniquement des noms de clés du tableau, mais pas des valeurs correspondantes. Par exemple, vous souhaitez supprimer certaines clés ou comparer la structure de deux tableaux.

  • array_diff_assoc () convient aux scénarios courants lorsque vous devez comparer complètement les clés et les valeurs dans un tableau, telles que le filtrage des éléments avec des noms et des valeurs de clés différents dans deux tableaux.

Exemple: remplacement de l'URL

Supposons que nous ayons un tableau qui contient différentes URL et que nous devons être remplacés. Nous pouvons utiliser array_diff_key () ou array_diff_assoc () pour implémenter le remplacement, selon que nous devons comparer en fonction de la clé ou de la valeur clé.

 $urls = [
    "home" => "http://m66.net/home",
    "about" => "http://example.com/about",
    "contact" => "http://m66.net/contact"
];

$other_urls = [
    "home" => "http://m66.net/home",
    "about" => "http://m66.net/about",
];

$result = array_diff_key($urls, $other_urls);
print_r($result);

Résultat de sortie

 Array
(
    [contact] => http://m66.net/contact
)

Dans cet exemple, nous comparons uniquement en fonction du nom de clé et trouvons enfin les éléments qui sont dans les URL $ mais pas dans $ autres_urls .

Ce qui précède est la différence entre array_diff_key () et array_diff_assoc () . Selon vos besoins, le choix de la bonne fonction pour gérer les différences de tableau peut efficacement améliorer l'efficacité et la lisibilité du code.