Position actuelle: Accueil> Derniers articles> Quelle est la différence spécifique entre Array_INTERSECT_UASSOC et Array_INTERSECT_ASSOC, et quand est-elle plus appropriée?

Quelle est la différence spécifique entre Array_INTERSECT_UASSOC et Array_INTERSECT_ASSOC, et quand est-elle plus appropriée?

gitbox 2025-08-30

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.


1. Introduction aux fonctions de base

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


2. Différences spécifiques

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

3. Exemple de code

 <?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);
?>

4. Quand choisir lequel?

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


5. Résumé

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