回答: ジェネレーターとイテレーターは、データセット全体を保存せずに値を 1 つずつ生成できる特別な関数およびオブジェクトです。ジェネレーター: 呼び出しごとに 1 つの値を含む一連の値を生成します。 イテレーター: コレクション要素にアクセスするメソッドを提供し、トラバース時に要素を生成します。 実用的な戦闘: データ全体を保存せずに、ページごとにデータ セットを生成するために使用されます。メモリにセットされます。
PHP の高度な機能: ジェネレーターとイテレーターの魔法のような使い方
ジェネレーター
ジェネレーターは、一連の値を生成するために使用される特別な関数です。通常の関数とは異なり、ジェネレーターは値の配列全体をメモリに保存せずに、呼び出しごとに値を生成できます。
function numbersGenerator() { for ($i = 1; $i <= 10; $i++) { yield $i; } } foreach (numbersGenerator() as $number) { echo $number . "\n"; }
Iterator
イテレータは、コレクション内の要素にアクセスする方法を提供するオブジェクトです。ジェネレーターと同様に、イテレーターは、コレクション全体をメモリーに保管せずに、コレクションを反復処理しながら要素を生成できます。
class NumberIterator implements Iterator { private $start; private $end; private $current; public function __construct($start, $end) { $this->start = $start; $this->end = $end; $this->current = $start; } public function rewind() { $this->current = $this->start; } public function current() { return $this->current; } public function key() { return $this->current; } public function next() { $this->current++; } public function valid() { return $this->current <= $this->end; } } $iterator = new NumberIterator(1, 10); foreach ($iterator as $number) { echo $number . "\n"; }
実際のケース: Paginator
ジェネレーターとイテレーターは、ページングのシナリオに非常に適しています。ジェネレーターまたはイテレーターを使用すると、データセット全体をメモリに保存せずに、ページごとにデータセットを生成できます。
りー以上がPHP の高度な機能: ジェネレーターとイテレーターの素晴らしい使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。