Maison >développement back-end >tutoriel php >Comment filtrer les lignes d'un tableau en faisant correspondre les valeurs à l'aide de array_uintersect() ?

Comment filtrer les lignes d'un tableau en faisant correspondre les valeurs à l'aide de array_uintersect() ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-23 16:06:02222parcourir

How to Filter Array Rows by Matching Values Using array_uintersect()?

Conserver les lignes du tableau correspondant aux valeurs dans un tableau plat

Contexte :

Vous avez un tableau, $arr1, avec plusieurs colonnes et un autre tableau, $arr2, contenant une liste de valeurs. L'objectif est de filtrer $arr1 et de conserver uniquement les lignes où la colonne id correspond à une valeur dans $arr2.

Solution :

Utilisation de array_uintersect() :

La solution la plus efficace utilise la fonction array_uintersect(), qui compare les éléments de deux tableaux à l'aide d'un rappel défini par l'utilisateur. Dans ce cas, le rappel vérifie si les valeurs d'identifiant correspondent.

var_export(
    array_uintersect(
        $arr1,
        $arr2,
        fn($a, $b) =>
            ($a['id'] ?? $a)
            <=>
            ($b['id'] ?? $b)
    )
);

Explication :

  • La fonction array_uintersect() prend deux tableaux et un rappel comme arguments.
  • La fonction de rappel est invoquée pour chaque élément des deux tableaux, et elle doit renvoyer 0 si les éléments sont considérés comme égaux, 1 si le premier élément est supérieur et -1 si le deuxième élément est supérieur .
  • Si un élément n'a pas de colonne id, sa valeur brute est utilisée à des fins de comparaison.
  • Le résultat est un tableau contenant uniquement les lignes de $arr1 où la colonne id correspond à une valeur dans $arr2.

Avantages de array_uintersect() :

  • C'est une fonction PHP native, garantissant efficacité et compatibilité.
  • Il effectue le tri lors de l'évaluation, ce qui optimise les performances.
  • Il fournit une solution concise et lisible par rapport aux appels itérés de in_array().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn