PHP5.5 yield特性如何理解及实例解析应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计638个文字,预计阅读时间需要3分钟。
yield生成器是PHP5.5之后引入的特性,它提供了一种更简洁的方法来实现迭代对象。以下是对yield特性的简单描述:
yield生成器是PHP5.5引入的,它允许开发者以更简洁的方式创建迭代对象。通过使用yield,可以轻松地实现类似迭代器的功能,而不需要定义复杂的类。
具体来说,yield生成器具有以下特点:
- yield生成器是PHP5.5之后的特性,用于实现迭代。- 使用yield可以创建一个生成器函数,该函数可以逐个产生值,而不是一次性返回所有值。- 相比于传统的类实现迭代器,yield生成器更加简洁易用。- yield生成器适用于需要逐个处理数据的情况,例如处理文件行或数据库记录。
以下是一个简单的yield生成器示例:
phpfunction generateNumbers() { for ($i=1; $i <=5; $i++) { yield $i; }}
foreach (generateNumbers() as $number) { echo $number . PHP_EOL;}
在这个例子中,`generateNumbers`函数是一个生成器函数,它使用yield逐个产生数字1到5。在foreach循环中,这些数字将被逐个输出。
本文实例讲述了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程序设计有所帮助。
本文共计638个文字,预计阅读时间需要3分钟。
yield生成器是PHP5.5之后引入的特性,它提供了一种更简洁的方法来实现迭代对象。以下是对yield特性的简单描述:
yield生成器是PHP5.5引入的,它允许开发者以更简洁的方式创建迭代对象。通过使用yield,可以轻松地实现类似迭代器的功能,而不需要定义复杂的类。
具体来说,yield生成器具有以下特点:
- yield生成器是PHP5.5之后的特性,用于实现迭代。- 使用yield可以创建一个生成器函数,该函数可以逐个产生值,而不是一次性返回所有值。- 相比于传统的类实现迭代器,yield生成器更加简洁易用。- yield生成器适用于需要逐个处理数据的情况,例如处理文件行或数据库记录。
以下是一个简单的yield生成器示例:
phpfunction generateNumbers() { for ($i=1; $i <=5; $i++) { yield $i; }}
foreach (generateNumbers() as $number) { echo $number . PHP_EOL;}
在这个例子中,`generateNumbers`函数是一个生成器函数,它使用yield逐个产生数字1到5。在foreach循环中,这些数字将被逐个输出。
本文实例讲述了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程序设计有所帮助。

