PHP の高度な機能: ジェネレーターとイテレーターの素晴らしい使い方

WBOY
リリース: 2024-06-01 20:44:00
オリジナル
1001 人が閲覧しました

回答: ジェネレーターとイテレーターは、データセット全体を保存せずに値を 1 つずつ生成できる特別な関数およびオブジェクトです。ジェネレーター: 呼び出しごとに 1 つの値を含む一連の値を生成します。 イテレーター: コレクション要素にアクセスするメソッドを提供し、トラバース時に要素を生成します。 実用的な戦闘: データ全体を保存せずに、ページごとにデータ セットを生成するために使用されます。メモリにセットされます。

PHP の高度な機能: ジェネレーターとイテレーターの素晴らしい使い方

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート