gpt4 book ai didi

php - PHP 中单个循环中的多个生成器

转载 作者:可可西里 更新时间:2023-11-01 12:30:52 24 4
gpt4 key购买 nike

我需要编写一个简单的脚本来从多个文件加载数据并以某种方式合并它们。但是,考虑到文件可能非常大,我想部分加载数据。为此,我决定使用 yield。根据示例,我发现我可以对单个生成器使用以下构造:

$generator = $someClass->load(); //load method uses yield so it returns generator object
foreach($generator as $i) {
// do something
}

但是如果我想同时使用两个生成器怎么办?

$generatorA = $someClass1->load(); //load method uses yield so it returns generator object
$generatorB = $someClass2->load(); //load method uses yield so it returns generator object
foreach($generatorA as $i) {
// how can I access to resultSet from generatorB here?
}

最佳答案

Generators in PHP实现 Iterator interface ,因此您可以合并/合并多个 Generator,就像合并多个 Iterator 一样。

如果你想一个接一个地迭代两个生成器(合并 A + B),那么你可以使用 AppendIterator .

$aAndB = new AppendIterator();
$aAndB->append($generatorA);
$aAndB->append($generatorB);

foreach ($aAndB as $i) {
...

如果你想同时遍历两个生成器,你可以使用 MultipleIterator .

$both = new MultipleIterator();
$both->attachIterator($generatorA);
$both->attachIterator($generatorB);

foreach ($both as list($valueA, $valueB)) {
...

这两个例子包括。示例和注意事项也在我的这篇博文中:

否则我不明白你一直在问什么。如果你能说清楚,我应该能给你更多的指导。

关于php - PHP 中单个循环中的多个生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23453534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com