Implémentation de calcul paresseux de l'intersection et de l'union de tableaux en PHP

WBOY
Libérer: 2024-05-01 08:54:02
original
1044 Les gens l'ont consulté

PHP Calcul paresseux des intersections et des unions de tableaux En PHP, vous pouvez utiliser des générateurs pour implémenter des calculs paresseux d'intersections et d'unions de tableaux afin de retarder le calcul des résultats jusqu'à ce que cela soit nécessaire : Intersection : utilisez le générateur array_intersect_lazy(), uniquement si les éléments du tableau sont égal Ensuite seulement, itère et génère des sorties. Union : à l'aide du générateur array_union_lazy(), parcourez deux tableaux et affichez-les dans le résultat, en filtrant les éléments en double.

Implémentation de calcul paresseux de lintersection et de lunion de tableaux en PHP

Implémentation paresseuse du calcul de l'intersection et de l'union de tableaux en PHP

En PHP, le traitement de l'intersection et de l'union de tableaux est une opération courante. Habituellement, nous utiliserons la fonction array_intersect()array_merge() pour mettre en œuvre ces opérations. Cependant, cela entraîne le calcul immédiat du résultat, ce qui peut parfois entraîner des problèmes de performances, notamment avec les grandes baies.

Le calcul paresseux peut résoudre ce problème, il nous permet de retarder le calcul jusqu'à ce que le résultat soit réellement nécessaire. À l’aide de générateurs, nous pouvons facilement implémenter des intersections et des unions de tableaux calculées paresseusement.

Mise en œuvre

Intersection

function array_intersect_lazy($array1, $array2) {
    foreach ($array1 as $key => $value) {
        if (isset($array2[$key]) && $value === $array2[$key]) {
            yield $value;
        }
    }
}
Copier après la connexion

Union

function array_union_lazy($array1, $array2) {
    foreach ($array1 as $key => $value) {
        yield $value;
    }

    foreach ($array2 as $key => $value) {
        if (!isset($array1[$key])) {
            yield $value;
        }
    }
}
Copier après la connexion

Cas pratique

$array1 = ['foo', 'bar', 'baz'];
$array2 = ['bar', 'qux', 'quux'];

foreach (array_intersect_lazy($array1, $array2) as $value) {
    echo "$value\n";
}

// 输出:
// bar

foreach (array_union_lazy($array1, $array2) as $value) {
    echo "$value\n";
}

// 输出:
// foo
// bar
// baz
// qux
// quux
Copier après la connexion

Ces générateurs nous permettent de parcourir et d'imprimer l'intersection ou l'union directement sans attendre la fin du calcul du résultat . Cela peut améliorer considérablement les performances des grandes baies.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal