En php, quand utiliser array_diff () et quand utiliser array_diff_uassoc () ? Quelles sont les différences et les scénarios applicables entre ces deux fonctions?
PHP fournit de nombreuses fonctions de fonctionnement de tableau intégré, parmi lesquelles array_diff () et array_diff_uassoc () sont deux fonctions très couramment utilisées. Ils sont tous utilisés pour calculer les différences entre les tableaux, mais ils diffèrent en implémentations spécifiques et en scénarios applicables. Cet article analysera les scénarios d'utilisation, les différences et leurs situations applicables de ces deux fonctions.
La fonction Array_Diff () est utilisée pour calculer la différence entre deux tableaux ou plus, renvoyant un tableau contenant tous les éléments qui apparaissent dans le premier tableau mais pas dans d'autres tableaux. Cette fonction compare les valeurs du tableau sans se soucier des noms de clés du tableau.
array_diff(array $array1, array $array2, array ...$arrays): array
<?php
$array1 = ["apple", "banana", "cherry"];
$array2 = ["banana", "cherry", "date"];
$result = array_diff($array1, $array2);
print_r($result);
?>
Sortir:
Array
(
[0] => apple
)
Dans cet exemple, Array_Diff () renvoie un tableau contenant des éléments qui existent dans Array1 mais pas dans Array2 . Par conséquent, "Apple" est conservé car il apparaît dans Array1 et non dans Array2 .
array_diff () fonctionne lorsque vous ne vous souciez que des différences entre les valeurs du tableau. Par exemple, vous pouvez utiliser array_diff () pour comparer la différence entre les données de formulaire soumises par l'utilisateur et les données système, ou effectuer un fonctionnement de différences de définition.
La fonction array_diff_uassoc () est similaire à array_diff () . La principale différence est qu'il se compare non seulement en fonction des différences de valeurs, mais prend également en compte les différences dans les noms de clés et permet la comparaison des paires de valeurs clés dans le tableau via des fonctions de comparaison définies par l'utilisateur.
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
<?php
$array1 = ["apple" => "red", "banana" => "yellow", "cherry" => "red"];
$array2 = ["banana" => "yellow", "cherry" => "green"];
$result = array_diff_uassoc($array1, $array2, "strcasecmp");
print_r($result);
?>
Sortir:
Array
(
[apple] => red
)
Dans cet exemple, array_diff_uassoc () utilise Strcasecmp comme fonction de comparaison. StrcasecMP compare les noms de clés (c'est-à-dire les noms de fruits) dans le tableau et est insensible à la cas. Dans Array1 , la touche "Apple" a la valeur correspondante "rouge", alors qu'il n'y a pas de clé identique dans Array2 . Par conséquent, array_diff_uassoc () renvoie "Apple" => "Red" .
array_diff_uassoc () convient lorsque vous devez déterminer la différence basée sur une comparaison personnalisée des noms de clés et des valeurs de clés. Surtout lorsque vous traitez avec des tableaux associatifs, array_diff_uassoc () permet d'ajuster les règles de comparaison via des fonctions de comparaison personnalisées. Les scénarios courants comprennent la comparaison des résultats de la requête de la base de données, le traitement des tableaux multidimensionnels, etc.
caractéristiques | array_diff () | array_diff_uassoc () |
---|---|---|
Normes comparatives | Comparez uniquement les valeurs du tableau | Comparez les valeurs du tableau et les noms de clés simultanément |
S'il faut prendre en charge les comparaisons définies par l'utilisateur | Non pris en charge | Prend en charge la comparaison des noms de clés grâce à des fonctions de comparaison définies par l'utilisateur |
Scénarios applicables | Comparaison des différences dans les valeurs du tableau | Comparaison des différences entre les paires de valeurs clés du tableau, soutenant les règles de comparaison personnalisées |
Utilisez Array_Diff () : Lorsque vous vous souciez uniquement des différences de valeurs dans un tableau, l'utilisation de Array_Diff () est le choix le plus simple et le plus efficace. Par exemple, comparez les valeurs dans deux tableaux pour trouver des éléments qui existent dans un tableau mais pas dans un autre.
Utilisez array_diff_uassoc () : Lorsque vous devez comparer les valeurs d'un tableau avec des noms de clés, ou lorsque vous devez comparer les règles pour les noms de clés personnalisés, il est plus approprié d'utiliser array_diff_uassoc () . Par exemple, traitez avec les tableaux associatifs ou en cas d'exigence de comparaison spéciale pour les noms de clés.
array_diff () est utilisé pour calculer la différence entre les valeurs du tableau.
En plus de comparer les valeurs du tableau, array_diff_uassoc () permet également des règles de comparaison des noms de clés personnalisés, qui conviennent aux scénarios plus complexes.
Lors du choix, cela dépend si vos besoins ne comparent que les valeurs ou envisagez les différences entre les noms de clés et les valeurs de clés.
En comprenant les différences et les scénarios applicables entre ces deux fonctions, vous pouvez gérer plus de manière flexible les différences de tableau et optimiser l'efficacité et la lisibilité de votre code.