解决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才会根据需要获取调用迭代器函数,并且保存迭代器的值 ,等待下次使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值