php的iterator迭代器,代码示例

在学习的时候,发了php提供了iterator迭代器的接口,自己在本地跑了一下,代码如下:

<?php

class Account implements Iterator
{
    private $_names = ['Tom', 'Bill', 'Jason', 'Amy', 'Jenny'];
    private $_key = 0;//索引游标
    private $_step = 0;//执行步骤

    public function current()
    {
        $this->_step++;
        echo $this->_step . '步,current->获取当前值' . '<br>';
        return $this->_names[$this->_key];
    }

    public function next()
    {
        $this->_step++;
        echo $this->_step . '步,next->游标指向下一个' . '<br>';
        $this->_key++;
    }

    public function key()
    {
        $this->_step++;
        echo $this->_step . '步,key->获取当前键名' . '<br>';
        return $this->_key;
    }

    public function valid()
    {
        $this->_step++;
        echo $this->_step . '步,valid->判断是否有值' . '<br>';
        if (!isset($this->_names[$this->_key])) {
            echo '没有值了,key是' . $this->_key . '<br>';
        } else {
            echo '还有值,key是' . $this->_key . '<br>';
            return $this->_names[$this->_key];
        }
    }

    public function rewind()
    {
        $this->_step++;
        echo $this->_step . '步,rewind->游标归零' . '<br>';
        $this->_key = 0;
    }
}

$objAccount = new Account();
foreach ($objAccount as $key => $value) {
    echo 'foreach输出:key是' . $key . ' => ' . 'value是' . $value . '<br>';
}

结果如下:

1步,rewind->游标归零
2步,valid->判断是否有值
还有值,key是0
3步,current->获取当前值
4步,key->获取当前键名
foreach输出:key是0 => value是Tom
5步,next->游标指向下一个
6步,valid->判断是否有值
还有值,key是1
7步,current->获取当前值
8步,key->获取当前键名
foreach输出:key是1 => value是Bill
9步,next->游标指向下一个
10步,valid->判断是否有值
还有值,key是2
11步,current->获取当前值
12步,key->获取当前键名
foreach输出:key是2 => value是Jason
13步,next->游标指向下一个
14步,valid->判断是否有值
还有值,key是3
15步,current->获取当前值
16步,key->获取当前键名
foreach输出:key是3 => value是Amy
17步,next->游标指向下一个
18步,valid->判断是否有值
还有值,key是4
19步,current->获取当前值
20步,key->获取当前键名
foreach输出:key是4 => value是Jenny
21步,next->游标指向下一个
22步,valid->判断是否有值
没有值了,key是5

迭代器是个接口,引用该接口的类中,必须定义接口提供的方法。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值