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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP5.5新特性之yield理解与用法实例分析

    本文实例讲述了PHP5.5新特性之yield理解与用法。分享给大家供大家参考,具体如下:

    yield生成器是php5.5之后出现的,yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。

    yield生成器允许你 在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组。

    使用示例:

    /**
     * 计算平方数列
     * @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
        ...

    示例2:

    //对某一数组进行加权处理
    $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 8新特性简介
    • 简述PHP7.4 新特性和废弃的功能
    • php7新特性的理解和比较总结
    • php7函数,声明,返回值等新特性介绍
    • PHP新特性之字节码缓存和内置服务器
    • PHP新特性详解之命名空间、性状与生成器
    • PHP7新特性简述
    • php 7新特性之类型申明详解
    • 聊聊 PHP 8 新特性 Attributes
    上一篇:PHP基于openssl实现的非对称加密操作示例
    下一篇:PHP赋值的内部是如何跑的详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP5.5新特性之yield理解与用法实例分析 PHP5.5,新特性,新,特性,之,