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 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; } } }
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; } } }
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
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!