Position actuelle: Accueil> Derniers articles> Méthode pratique pour comparer et filtrer les tableaux multidimensionnels complexes avec la fonction Array_INTERSECT_UASSOC

Méthode pratique pour comparer et filtrer les tableaux multidimensionnels complexes avec la fonction Array_INTERSECT_UASSOC

gitbox 2025-06-16

Dans PHP, la fonction Array_INTERSECT_UASSOC est un outil très puissant qui permet aux développeurs de comparer et de filtrer deux tableaux ou plus, en particulier lorsqu'ils traitent des tableaux multidimensionnels complexes. Grâce à cette fonction, nous pouvons comparer les clés et les valeurs du tableau en fonction de la fonction de rappel définie par l'utilisateur, puis obtenir les éléments du tableau qui remplissent les conditions. Dans cet article, nous explorerons en profondeur la façon d'utiliser Array_INTERSECT_UASSOC pour traiter des tableaux multidimensionnels complexes et donner des exemples d'application basés sur des scénarios réels.

Introduction à la fonction Array_INTERSECT_UASSOC

La fonction Array_INTERSECT_UASSOC renvoie l'intersection entre deux tableaux ou plus, qui est comparé sur la base d'une fonction de comparaison de valeur clé personnalisée. La fonction est définie comme suit:

 array_intersect_uassoc(array $array1, array $array2, callable $value_func)

Description du paramètre:

  • $ array1 : le premier tableau.

  • $ array2 : le deuxième tableau.

  • $ value_func : fonction de rappel personnalisée pour comparer les clés et les valeurs dans un tableau.

Cette fonction est différente du Array_INTERSECT ordinaire, qui compare uniquement les valeurs du tableau, et array_intersect_uassoc vous permet de spécifier une fonction personnalisée pour comparer les correspondances des clés et des valeurs.

Utiliser des scénarios

Souvent, nous rencontrons des situations où nous devons effectuer un filtrage plus fin lorsque nous traitons des tableaux multidimensionnels, en particulier lorsque nous sommes plus préoccupés par la correspondance des valeurs de tableau, mais aussi les clés ou les conditions complexes du tableau. Array_INTERSECT_UASSOC est un outil idéal pour résoudre ces problèmes.

Par exemple, dans le traitement des données des plates-formes de commerce électronique, nous devrons peut-être filtrer les informations sur les produits qui correspondent au prix, à la quantité, à la SKU et à d'autres conditions à partir de deux tableaux différents. À l'heure actuelle, le rôle de Array_INTERSECT_UASSOC ne peut pas être ignoré.

Cas réel: comparaison de deux listes de produits

Supposons que nous ayons deux tableaux multidimensionnels qui contiennent des informations détaillées pour différents produits. Nous devons filtrer le même produit à partir de ces deux tableaux en fonction de certaines conditions communes, telles que SKU et le prix du produit.

Échantillons de données

 $array1 = [
    101 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
    102 => ['sku' => 'B234', 'price' => 150, 'name' => 'Product 2'],
    103 => ['sku' => 'C345', 'price' => 200, 'name' => 'Product 3'],
];

$array2 = [
    201 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
    202 => ['sku' => 'B234', 'price' => 140, 'name' => 'Product 2'],
    203 => ['sku' => 'D456', 'price' => 250, 'name' => 'Product 4'],
];

Utilisez Array_INTERSECT_UASSOC pour filtrer les produits de correspondance

Nous avons besoin d'une fonction de rappel pour comparer si SKU et le prix sont égaux:

 function compare_product($a, $b) {
    // Comparer sku et price
    return ($a['sku'] === $b['sku'] && $a['price'] === $b['price']) ? 0 : 1;
}

$result = array_intersect_uassoc($array1, $array2, 'compare_product');

print_r($result);

Résultat de sortie:

 Array
(
    [101] => Array
        (
            [sku] => A123
            [price] => 100
            [name] => Product 1
        )
)

Dans cet exemple, nous personnalisons la fonction Compare_Product , et Array_INTERSECT_UASSOC ne conservera ces produits correspondants que si les produits SKU et le prix dans les deux tableaux sont les mêmes.

Extension de scénario d'application

1. Filtre basé sur des conditions complexes

Array_INTERSECT_UASSOC est un outil très utile lorsque nous devons comparer et filtrer les tableaux en fonction de plusieurs attributs. Par exemple, si vous souhaitez comparer le SKU , le prix et le nom du produit en même temps, ajustez simplement la fonction de rappel.

 function compare_complex_product($a, $b) {
    return ($a['sku'] === $b['sku'] && $a['price'] === $b['price'] && $a['name'] === $b['name']) ? 0 : 1;
}

2. Filtre les intersections de plusieurs tableaux

Array_INTERSECT_UASSOC ne convient pas seulement à la comparaison de deux tableaux, mais il peut également effectuer un filtrage d'intersection sur plusieurs tableaux. Par exemple, lorsque vous devez comparer plus de trois tableaux, vous pouvez toujours utiliser cette fonction et transmettre plus de tableaux sous forme de paramètres.

 $array3 = [
    301 => ['sku' => 'A123', 'price' => 100, 'name' => 'Product 1'],
    302 => ['sku' => 'C345', 'price' => 200, 'name' => 'Product 3'],
];

$result = array_intersect_uassoc($array1, $array2, $array3, 'compare_product');

Résumer

Array_INTERSECT_UASSOC est un outil puissant pour gérer des tableaux multidimensionnels complexes. Il utilise une fonction de rappel personnalisée pour vous permettre de comparer les tableaux en fonction des valeurs clés, filtrant ainsi facilement les éléments qui répondent aux critères. Qu'il s'agisse de gérer des comparaisons de valeurs clés simples ou un filtrage complexe multidimensionnel, il offre beaucoup de flexibilité et d'aide.

Si vous n'avez pas utilisé cette fonction, vous pourriez aussi bien essayer de l'appliquer dans un vrai projet pour résoudre certains problèmes de traitement des données complexes.