zoukankan      html  css  js  c++  java
  • php生成器

    生成品总览

    生成器语法

    官方示例代码一

    <?php
    function xrange($start, $limit, $step = 1) {
        if ($start < $limit) {
            if ($step <= 0) {
                throw new LogicException('Step must be +ve');
            }
    
            for ($i = $start; $i <= $limit; $i += $step) {
                yield $i;
            }
        } else {
            if ($step >= 0) {
                throw new LogicException('Step must be -ve');
            }
    
            for ($i = $start; $i >= $limit; $i += $step) {
                yield $i;
            }
        }
    }
    
    /* 
     * 注意下面range()和xrange()输出的结果是一样的。
     */
    
    echo 'Single digit odd numbers from range():  ';
    foreach (range(1, 9, 2) as $number) {
        echo "$number ";
    }
    echo "
    ";
    
    echo 'Single digit odd numbers from xrange(): ';
    foreach (xrange(1, 9, 2) as $number) {
        echo "$number ";
    }
    ?>

    官方示例代码二

     1 <?php
     2 function gen_one_to_three() {
     3     for ($i = 1; $i <= 3; $i++) {
     4         //注意变量$i的值在不同的yield之间是保持传递的。
     5         yield $i;
     6     }
     7 }
     8 
     9 $generator = gen_one_to_three();
    10 foreach ($generator as $value) {
    11     echo "$value
    ";
    12 }
    13 ?>
    $generator = gen_one_to_three();是不执行gen_one_to_three()方法的,因为有yield关键字,只有在foreach迭代的时间才执行。
  • 相关阅读:
    抽奖概率算法
    redis启动异常
    php如何快速读取大文件
    nginx反向代理解决跨域
    sublime修改侧边栏字体
    curl
    公众号开发一
    数组
    在windows下用vagrant建立lnmp开发环境
    gets--vs--fgets
  • 原文地址:https://www.cnblogs.com/jimzbom/p/9607693.html
Copyright © 2011-2022 走看看