Position actuelle: Accueil> Derniers articles> Comprendre la différence entre array_diff () et array_diff_assoc ()

Comprendre la différence entre array_diff () et array_diff_assoc ()

M66 2025-05-13

En php, array_diff () et array_diff_assoc () sont deux fonctions couramment utilisées pour comparer les tableaux. Leurs fonctions sont quelque peu similaires à celles des scénarios d'application, mais il existe des différences significatives dans des comparaisons spécifiques. Comprendre la différence entre ces deux fonctions aidera à traiter plus précisément les données du tableau dans le développement réel.

1. Fonction Introduction

  1. array_diff ()
    array_diff () est utilisé pour comparer deux tableaux ou plus et des valeurs de retour dans le premier tableau mais pas dans d'autres tableaux. Il se compare sur la valeur quel que soit le nom de clé.

    grammaire:

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

    Exemple:

     $array1 = [1, 2, 3, 4];
    $array2 = [2, 3, 5];
    
    $result = array_diff($array1, $array2);
    print_r($result);
    

    Sortir:

     Array
    (
        [0] => 1
        [3] => 4
    )
    

    Dans cet exemple, Array_Diff () compare les valeurs de $ array1 et $ array2 , et le résultat est une valeur qui existe dans $ array1 mais n'existe pas dans $ array2 .

  2. array_diff_assoc ()
    La fonction de Array_Diff_assoc () est similaire à Array_Diff () , mais elle considère non seulement la valeur lors de la comparaison, mais compare également les noms de clés (touches). Autrement dit, seuls les éléments dont les valeurs et les noms de clés ne sont pas égaux seront considérés comme différents.

    grammaire:

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

    Exemple:

     $array1 = [1 => "apple", 2 => "banana", 3 => "cherry"];
    $array2 = [1 => "apple", 2 => "grape"];
    
    $result = array_diff_assoc($array1, $array2);
    print_r($result);
    

    Sortir:

     Array
    (
        [2] => banana
        [3] => cherry
    )
    

    Dans cet exemple, array_diff_assoc () compare les valeurs et les noms de clés de $ array1 et $ array2 . Bien que 1 => "Apple" soit le même dans les deux tableaux, array_diff_assoc () ignorera cet élément et continuera à rechercher des éléments avec différents noms de clés et des valeurs correspondantes. Par conséquent, 2 => "banane" et 3 => "cerise" sont considérés comme différents.

2. Résumé des différences

fonction Normes comparatives Scénarios applicables
array_diff () Comparez uniquement les valeurs, aucun nom de clé n'est considéré Scénarios où des comparaisons sont requises en fonction des valeurs et ignorant les différences de noms de clés de tableau
array_diff_assoc () Comparez les valeurs et les noms de clés Scénarios où les valeurs et les noms de clés doivent être comparés, tels que la comparaison de l'intégrité de la structure du tableau, ou des scénarios où les noms de clés doivent être cohérents

3. Utilisez des scénarios

  1. Scénarios utilisant array_diff () :
    Lorsque vous ne vous souciez que de la valeur du tableau et que vous ne vous souciez pas des noms de clés, vous pouvez utiliser array_diff () . Par exemple, vous avez deux listes qui contiennent différents ID de produit, et vous vous souciez seulement de savoir si les ID de produit sont cohérents, pas sur leur position ou leurs noms de clés dans le tableau.

    Exemple de scénario:
    Par exemple, pour découvrir l'ID de produit qui ne se chevauche pas dans les deux listes de produits, le code est le suivant:

     $list1 = [101, 102, 103, 104];
    $list2 = [102, 104, 105];
    
    $unique_ids = array_diff($list1, $list2);
    print_r($unique_ids);
    

    Sortir:

     Array
    (
        [0] => 101
        [2] => 103
    )
    
  2. Scénarios utilisant array_diff_assoc () :
    Lorsque vous avez besoin non seulement de comparer les valeurs du tableau, mais d'assurer également la cohérence des noms de clés, vous pouvez utiliser array_diff_assoc () . Par exemple, dans deux listes d'utilisateurs, le nom de clé représente l'ID de l'utilisateur et la valeur représente les informations de l'utilisateur. Vous devez vous assurer que l'ID de chaque utilisateur et les informations correspondantes sont cohérentes.

    Exemple de scénario:
    Par exemple, vous souhaitez comparer deux tableaux d'informations utilisateur et trouver des éléments avec différents noms et valeurs de clés:

     $users1 = [1 => "Alice", 2 => "Bob", 3 => "Charlie"];
    $users2 = [1 => "Alice", 2 => "Eve", 4 => "David"];
    
    $diff_users = array_diff_assoc($users1, $users2);
    print_r($diff_users);
    

    Sortir:

     Array
    (
        [2] => Bob
        [3] => Charlie
    )
    

4. Résumé

  • array_diff () convient aux scénarios où ne se soucie que si les valeurs du tableau sont les mêmes, ignorant les différences de noms de clés.

  • array_diff_assoc () est plus applicable lorsqu'il est nécessaire de déterminer si le nom et la valeur de la clé sont cohérents.

Comprendre les scénarios de différence et d'utilisation entre ces deux fonctions vous aidera à choisir la fonction la plus appropriée en développement pour traiter les données de tableau, en évitant les erreurs inutiles dans les applications réelles.