PHPジェネレーターの使用手順を詳しく解説

php中世界最好的语言
リリース: 2023-03-26 13:26:01
オリジナル
1350 人が閲覧しました

今回はPHPジェネレーターを使用する手順について詳しく説明します。PHPジェネレーターを使用する際の注意点は何ですか?実際の事例を見てみましょう。

1. 公式説明: ジェネレーターは、Iterator インターフェースを実装するためのクラスを定義するのと比較して、単純なオブジェクトの反復を実装する簡単な方法を提供し、パフォーマンスのオーバーヘッドと複雑さが大幅に軽減されます。ジェネレーターを使用すると、メモリ内に配列を作成せずに、foreach ブロックにコードを記述して、一連のデータを反復処理できます。

2. ジェネレーターは、通常の カスタム関数 と同じです。一度だけ返される通常の関数とは異なり、ジェネレーターは反復する必要がある値を生成するために必要な回数だけ生成できます。

3. コード例:

//未使用生成器
echo '开始内存:'.getMemory().'
'; $nums = range(0,1000000); echo '结束内存:'.getMemory().'
'; //输出结果 //开始内存:0.23M //结束内存:130.31 //使用生成器 echo '开始内存:'.getMemory().'
'; $nums = xrange(1000000); function xrange($total) {   for ($i = 0; $i < $total; $i++) {     yield $i;   } } echo '结束内存:'.getMemory().'
'; //输出结果 //开始内存:0.23M //结束内存:0.23M
ログイン後にコピー

4. 実用的なアプリケーションの例

/**
 * 大量数据生成示例
 * @param int $page
 * @param int $limit
 * @return Generator
 */
public function generator($page = 1,$limit = 50000)
{
  while (true) {
    echo "第{$page}次".'generator开始内存:'.$this->getMemory().'
';     $start = ($page-1) * $limit;     $sql = "SELECT p.id,p.wh_code,p.goods_sn FROM p_product as p WHERE p.wh_code LIKE '%YB%' OR p.wh_code LIKE '%DZWH%' LIMIT {$start},{$limit} ";     $resultAll = db()->fetchAll($sql);     yield $resultAll; //生成器     if (count($resultAll) != $limit) {       break;     }     echo "第{$page}次".'generator结束内存:'.$this->getMemory().'
';     $page++;   } }     //测试生成器内存消耗 //    foreach ($this->generator() as $result) { //      var_dump($result[0]); //    }
ログイン後にコピー

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。 !

推奨読書:

PHPで一方向ハッシュ暗号化を実装する手順の詳細な説明

PHPでエントリファイルを非表示にする手順の詳細な説明

PECLメソッドのphp-mongodb拡張子

以上がPHPジェネレーターの使用手順を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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