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.
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.
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.
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.
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.
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 .
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.
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.