En PHP, il existe de nombreuses fonctions qui traitent des intersections de la table, parmi lesquelles Array_INTERSECT_ASSOC et Array_INTERSECT_UASSOC sont deux fonctions qui sont souvent confuses mais ont des fonctions très similaires. Ils sont tous utilisés pour calculer l'intersection de plusieurs tableaux, mais se comportent différemment lors de la comparaison des clés du tableau (clés). Cet article expliquera les différences entre ces deux fonctions en détail et donnera des suggestions pratiques.
Array_INTERSECT_ASSOC (Array $ array1, array $ array2, array ... $ arrays): array
Calculez les intersections du tableau et considérez non seulement la valeur (valeur) lors de la comparaison, mais comparez également strictement les clés. La comparaison des clés est un jugement d'égalité par défaut en utilisant PHP (c'est-à-dire == ).
array_INTERSECT_UASSOC (Array $ array1, array $ array2, array ... $ arrays, callable $ key_compare_func): array
Semblable à Array_INTERSECT_ASSOC , mais la comparaison des clés utilise la fonction de rappel définie par l'utilisateur $ key_compare_func au lieu de la comparaison par défaut d'égalité.
Caractéristiques | array_INTERSECT_ASSOC | array_INTERSECT_UASSOC |
---|---|---|
Comparez les valeurs | Oui | Oui |
Clé de comparaison | Oui | Oui |
Comment comparer les clés | Comparaison de clé par défaut (==) | Fonctions de rappel définies par l'utilisateur pour comparaison |
S'il faut prendre en charge les comparaisons personnalisées | Non | Oui |
Exemple d'utilisation | Pas besoin de passer dans les fonctions de comparaison | Une fonction de rappel qui doit être transmise dans la clé de comparaison |
<?php
$array1 = ["a" => "green", "b" => "brown", "c" => "blue", "1" => "red"];
$array2 = ["a" => "green", "1" => "red", "b" => "brown", "c" => "blue"];
// array_intersect_assoc Comparez directement les clés et les valeurs
$result_assoc = array_intersect_assoc($array1, $array2);
// Résultat de sortie:["a" => "green", "b" => "brown", "c" => "blue"]
print_r($result_assoc);
// Fonctions de comparaison personnalisées,Sensibilité à la casse lors de la comparaison des clés
function key_compare_func($key1, $key2) {
return strcmp($key1, $key2);
}
$array3 = ["A" => "green", "b" => "brown", "c" => "blue"];
$result_uassoc = array_intersect_uassoc($array1, $array3, "key_compare_func");
// Résultat de sortie:["b" => "brown", "c" => "blue"]
print_r($result_uassoc);
?>
Utilisez Array_INTERSECT_ASSOC :
C'est un choix concis et efficace lorsque vous n'avez besoin que de comparer les clés et les valeurs du tableau, et vous n'avez pas besoin de règles personnalisées (telles que l'insensible à la case, la conversion de type, etc.).
Utilisez Array_INTERSECT_UASSOC :
Lorsque vous devez avoir des besoins spéciaux pour la façon dont les clés sont comparées, telles que:
sensible aux majuscules et minuscules
Besoin d'une logique de comparaison plus complexe
Les clés de comparaison sont des objets personnalisés ou des types complexes
À l'heure actuelle, les règles de comparaison de clés flexibles peuvent être implémentées en transmettant des fonctions de rappel.
Array_INTERSECT_ASSOC est une intersection du tableau basée sur des comparaisons de valeur clé par défaut.
Array_INTERSECT_UASSOC fournit un mécanisme de comparaison de clés plus flexible, permettant aux utilisateurs de personnaliser la logique de comparaison.
Décidant si vous devez comparer les clés personnalisées en fonction des besoins de l'entreprise, la sélection de la bonne fonction peut écrire du code plus robuste et maintenable.