Maison  >  Article  >  développement back-end  >  Un moyen unique de générer une intersection et une union de tableaux à l'aide du générateur PHP

Un moyen unique de générer une intersection et une union de tableaux à l'aide du générateur PHP

王林
王林original
2024-05-02 11:39:01979parcourir

Les étapes pour utiliser un générateur pour générer des intersections et des unions de tableaux sont les suivantes : définir une fonction de générateur, utiliser rendement pour renvoyer une valeur et mémoriser son état actuel. Un générateur qui crée des intersections de tableaux, en utilisant la fonction array_intersect() pour renvoyer un nouveau tableau contenant les éléments de l'intersection. De même, créez un générateur pour l'union de tableaux, en utilisant la fonction array_merge() pour renvoyer un nouveau tableau contenant tous les éléments des deux tableaux. Utilisez une variable génératrice pour parcourir l'intersection ou l'union, en obtenant chaque élément.

Un moyen unique de générer une intersection et une union de tableaux à laide du générateur PHP

Une manière unique de générer une intersection et une union de tableaux à l'aide du générateur PHP

En PHP, un générateur est une fonction spéciale utilisée pour générer des données de séquence. Ils sont idéaux pour une utilisation dans les situations où de grands ensembles de données doivent être parcourus ou des résultats calculés paresseusement. Cet article montre une manière unique d'utiliser des générateurs pour générer des intersections et des unions de tableaux.

Syntaxe du générateur

Les fonctions du générateur sont définies en PHP à l'aide du mot-clé yield. Ce mot-clé permet à une fonction de renvoyer une valeur et de mémoriser son état actuel sans interrompre l'exécution. yield 关键字定义。该关键字允许函数在不中断执行的情况下返回一个值并记住其当前状态。

function myGenerator() {
    yield 1;
    yield 2;
    yield 3;
}

数组交集生成器

要创建数组交集的生成器,可以使用 array_intersect() 函数,该函数返回一个包含交集中元素的新数组。生成器版本如下:

function intersectGenerator(array $arr1, array $arr2): Generator {
    foreach ($arr1 as $k => $v) {
        if (in_array($v, $arr2, true)) {
            yield $v;
        }
    }
}

数组并集生成器

类似地,可以使用 array_merge()

function mergeGenerator(array $arr1, array $arr2): Generator {
    foreach ($arr1 as $v) {
        yield $v;
    }
    foreach ($arr2 as $v) {
        if (!in_array($v, $arr1, true)) {
            yield $v;
        }
    }
}

Générateur d'intersection de tableau

Pour créer un générateur d'intersection de tableau, vous pouvez utiliser la fonction array_intersect(), qui renvoie un nouveau tableau contenant les éléments de l'intersection. La version du générateur est la suivante :

$arr1 = [1, 2, 3, 4, 5];
$arr2 = [3, 4, 5, 6, 7];

$intersection = intersectGenerator($arr1, $arr2);
$union = mergeGenerator($arr1, $arr2);

foreach ($intersection as $value) {
    echo $value . " ";
}
echo "\n";

foreach ($union as $value) {
    echo $value . " ";
}

Array Union Generator

🎜🎜De même, un générateur d'unions de tableaux peut être créé à l'aide de la fonction array_merge(). Cette fonction renvoie un nouveau tableau contenant tous les éléments des deux tableaux (y compris les éléments en double). La version du générateur est la suivante : 🎜
3 4 5
1 2 3 4 5 6 7
🎜🎜 Exemple pratique 🎜🎜🎜Considérez l'exemple suivant : 🎜rrreee🎜Ceci affichera : 🎜rrreee

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