Position actuelle: Accueil> Derniers articles> Quelle est la différence entre array_udiff_uassoc () et array_diff_uassoc ()?

Quelle est la différence entre array_udiff_uassoc () et array_diff_uassoc ()?

M66 2025-06-06

Dans PHP, array_udiff_uassoc () et array_diff_uassoc () sont des fonctions utilisées pour comparer les tableaux, mais ils ont des fonctions, des utilisations et des méthodes d'implémentation différentes. Dans cet article, nous consulterons les différences entre ces deux fonctions et discuterons de leurs scénarios et fonctions d'utilisation.

1. Fonction Introduction

  1. array_udiff_uassoc ()
    La fonction array_udiff_uassoc () renvoie la différence entre deux tableaux ou plus, tout en comparant les noms de clés et les valeurs de clé. Cette fonction peut déterminer les différences entre les tableaux via des fonctions de comparaison de valeurs de clé personnalisées.

    Prototype de fonction:

     array_udiff_uassoc(array $array1, array $array2, callable $value_compare_func, callable $key_compare_func): array
    
    • Paramètre :

      • $ array1, $ array2 : le tableau qui doit être comparé.

      • $ value_compare_func : fonction de comparaison définie par l'utilisateur, égalité des valeurs de comparaison.

      • $ key_compare_func : fonction de comparaison définie par l'utilisateur, égalité des touches de comparaison.

    Cette fonction se comparera non seulement en fonction de la valeur, mais également sur la base du nom de clé, qui convient aux scénarios où un contrôle précis de la valeur et de la logique de comparaison des clés est requis.

  2. array_diff_uassoc ()
    La fonction array_diff_uassoc () est similaire à array_udiff_uassoc () , mais elle ne considère que les valeurs et les clés du tableau, et ne permet pas aux utilisateurs de personnaliser la logique de comparaison. Il compare les différences entre les deux tableaux et les éléments de retour qui n'apparaissent que dans le premier tableau.

    Prototype de fonction:

     array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
    
    • Paramètre :

      • $ array1, $ array2 : le tableau qui doit être comparé.

      • $ key_compare_func : une fonction utilisée pour comparer si les noms de clés sont égaux.

    Cette fonction compare les différences dans les noms de clés des tableaux via une fonction de comparaison de clés personnalisée, qui convient aux scénarios où seule une logique de comparaison de clés personnalisée est requise.

2. Différences fonctionnelles

  1. Contenu de comparaison

    • array_udiff_uassoc () comparera la valeur clé et le nom de clé du tableau en même temps, ce qui convient aux situations où vous devez personnaliser comment comparer les clés et les valeurs du tableau.

    • array_diff_uassoc () compare uniquement les différences de nom de clé du tableau et vous permet de personnaliser la façon de comparer les clés.

  2. Nombre de paramètres

    • array_udiff_uassoc () peut accepter plusieurs tableaux de comparaison, tandis que array_diff_uassoc () ne compare que les différences entre deux tableaux.

3. Utilisez des scénarios

1. Array_udiff_uassoc () Scénario d'utilisation

Supposons que vous ayez deux tableaux, l'un avec l'ID et le nom de l'utilisateur, et l'autre avec l'ID et la boîte aux lettres de l'utilisateur, et que vous devez comparer ces deux tableaux, en tenant compte des différences de clés et de valeurs, et en utilisant des règles de comparaison personnalisées.

 $array1 = [
    1 => 'John Doe',
    2 => 'Jane Smith',
    3 => 'George Brown'
];

$array2 = [
    1 => 'John Doe',
    2 => 'Jane S.',
    4 => 'Alice Green'
];

$value_compare_func = function ($a, $b) {
    return strcmp($a, $b);
};

$key_compare_func = function ($a, $b) {
    return $a - $b;
};

$result = array_udiff_uassoc($array1, $array2, $value_compare_func, $key_compare_func);
print_r($result);

Sortir:

 Array
(
    [3] => George Brown
)

Dans cet exemple, array_udiff_uassoc () compare les valeurs et les clés des deux tableaux, et renvoie enfin le terme de différence dans Array1 .

2. Array_diff_uassoc () Scénario d'utilisation

Si vous n'avez qu'à comparer les tableaux en fonction des différences de clés et ne vous souciez pas des différences de valeurs, array_diff_uassoc () est un choix plus approprié. Par exemple, supposons que vous ayez deux tableaux contenant l'ID utilisateur et d'autres informations, et que vous souhaitez trouver des clés qui existent dans le premier tableau mais pas dans le deuxième tableau.

 $array1 = [
    1 => 'John Doe',
    2 => 'Jane Smith',
    3 => 'George Brown'
];

$array2 = [
    1 => 'John Doe',
    4 => 'Alice Green'
];

$key_compare_func = function ($a, $b) {
    return $a - $b;
};

$result = array_diff_uassoc($array1, $array2, $key_compare_func);
print_r($result);

Sortir:

 Array
(
    [2] => Jane Smith
    [3] => George Brown
)

Dans cet exemple, array_diff_uassoc () ne renvoie que les éléments dans Array1 en fonction de la différence de clés.

4. Résumé

caractéristiques array_udiff_uassoc () array_diff_uassoc ()
Contenu de comparaison Valeurs et clés Clé seulement
S'il faut autoriser les fonctions de comparaison personnalisées Oui (les valeurs et les clés peuvent être comparées à la coutume) Oui (seules les comparaisons de clés personnalisées sont autorisées)
Scénarios applicables La différence entre les valeurs et les clés doit être considérée Se soucient des différences de clés

En général, le choix d'utiliser Array_UDIFF_UASSOC () ou Array_Diff_uassoc () dépend de la comparement des valeurs personnalisées et si vous devez comparer les valeurs avec les clés. Comprendre la différence entre ces deux fonctions vous aidera à faire le bon choix en fonction de vos besoins spécifiques.