• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP yield关键字功能与用法分析

    本文实例讲述了PHP yield关键字功能与用法。分享给大家供大家参考,具体如下:

    yield 关键字是php5.5版本推出的一个特性。生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。

    Example #1 一个简单的生成值的例子

    ?php
    function gen_one_to_three() {
      for ($i = 1; $i = 3; $i++) {
        //注意变量$i的值在不同的yield之间是保持传递的。
        yield $i;
      }
    }
    $generator = gen_one_to_three();
    foreach ($generator as $value) {
      echo "$value\n";
    }
    ?>
    
    

    简单来说就是:yield是仅仅是记录迭代过程中的一个过程值

    补充示例:

    示例2:

    /**
     * 计算平方数列
     * @param $start
     * @param $stop
     * @return Generator
     */
    function squares($start, $stop) {
      if ($start  $stop) {
        for ($i = $start; $i = $stop; $i++) {
          yield $i => $i * $i;
        }
      }
      else {
        for ($i = $start; $i >= $stop; $i--) {
          yield $i => $i * $i; //迭代生成数组: 键=》值
        }
      }
    }
    foreach (squares(3, 15) as $n => $square) {
      echo $n . ‘squared is‘ . $square . ‘br>‘;
    }
    
    

    输出:

        3 squared is 9
        4 squared is 16
        5 squared is 25
        ...

    示例3:

    //对某一数组进行加权处理
    $numbers = array(‘nike‘ => 200, ‘jordan‘ => 500, ‘adiads‘ => 800);
    //通常方法,如果是百万级别的访问量,这种方法会占用极大内存
    function rand_weight($numbers)
    {
      $total = 0;
      foreach ($numbers as $number => $weight) {
        $total += $weight;
        $distribution[$number] = $total;
      }
      $rand = mt_rand(0, $total-1);
      foreach ($distribution as $num => $weight) {
        if ($rand  $weight) return $num;
      }
    }
    //改用yield生成器
    function mt_rand_weight($numbers) {
      $total = 0;
      foreach ($numbers as $number => $weight) {
        $total += $weight;
        yield $number => $total;
      }
    }
    function mt_rand_generator($numbers)
    {
      $total = array_sum($numbers);
      $rand = mt_rand(0, $total -1);
      foreach (mt_rand_weight($numbers) as $num => $weight) {
        if ($rand  $weight) return $num;
      }
    }
    
    

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • 深入理解PHP中的static和yield关键字
    • PHP5.5新特性之yield理解与用法实例分析
    • php和C#的yield迭代器实现方法对比分析
    • 分享五个PHP7性能优化提升技巧
    • PHP开启opcache提升代码性能
    • 逐步提升php框架的性能
    • PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
    • 提高PHP编程效率 引入缓存机制提升性能
    • 提升PHP性能的21种方法介绍
    • 使用Huagepage和PGO来提升PHP7的执行性能
    • php使用yield对性能提升的测试实例分析
    上一篇:PHP获取对象属性的三种方法实例分析
    下一篇:PHP数字金额转换成中文大写显示
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    PHP yield关键字功能与用法分析 PHP,yield,关键字,功能,与,