在PHP中使用迭代器进行数据过滤可以通过自定义一个继承自 FilterIterator
类的子类来实现。下面是一个简单的例子:
class MyFilterIterator extends FilterIterator {
public function accept() {
$current = $this->current();
// 这里可以编写过滤逻辑,返回 true 表示保留该数据,返回 false 表示过滤该数据
return $current % 2 == 0; // 只保留偶数
}
}
$data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$iterator = new ArrayIterator($data);
$filteredIterator = new MyFilterIterator($iterator);
foreach ($filteredIterator as $value) {
echo $value . PHP_EOL;
}
在上面的例子中,我们自定义了一个 MyFilterIterator
类,继承自 FilterIterator
,并在 accept
方法中编写了过滤逻辑。然后我们将原始数据数组传入 ArrayIterator
来创建一个迭代器,再将这个迭代器传入我们自定义的 MyFilterIterator
中,得到一个过滤后的迭代器。最后使用 foreach 循环遍历过滤后的迭代器,只输出偶数。