解决range无法生成'Z'之后问题 && 迭代器的使用

场景

在生成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;
        }
    }

参考

  • 官方文档 https://secure.php.net/manual/zh/language.generators.syntax.php

迭代器

  • 迭代器很像普通的函数, 但也有区别
    • yield 替换了 return
    • 迭代器返回多个值保存在一个对象中 且 在循环调用这个对象的时候 PHP才会根据需要获取调用迭代器函数,并且保存迭代器的值 ,等待下次使用

猜你喜欢

转载自blog.csdn.net/cominglately/article/details/81224185