场景
在生成excel文件的时候, 偶尔会遇到写的列很长的情况,这时候就不想一个字母一个字母的写太麻烦 ,
而且这个时候 range() 在超过Z之后就不好用了
所以需要自己封装一个函数, 完成操作刚好有段时间没有使用迭代器了, 就封装一个瞧一瞧
解决
/**
* 解决range无法生成z之后的字母的问题
* @param $lower
* @param $upper
* @return \Generator
*/
public function excelRange($lower, $upper)
{
$mid = $lower;
while ($mid !== $upper) {
// 返回第一个数据
if ($mid === $lower) {
yield $mid;
}
$mid ++;
yield $mid;
}
}
迭代器
- 迭代器很像普通的函数, 但也有区别
- yield 替换了 return
迭代器返回多个值保存在一个对象中 且 在循环调用这个对象的时候 PHP才会根据需要获取调用迭代器函数,并且保存迭代器的值 ,等待下次使用