码迷,mamicode.com
首页 > Web开发 > 详细

php中的迭代器

时间:2015-06-08 11:37:00      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

<?php
class myIterator implements Iterator {
    private $position = 0;
    private $array = array(
        "firstelement",
        "secondelement",
        "lastelement",
    );  

    public function __construct() {
        $this->position = 0;
    }

    function rewind() {
       var_dump(__METHOD__);
        $this->position = 0;
    }

    function current() {
       var_dump(__METHOD__);
        return ‘one_‘ . $this->array[$this->position] . ‘_two‘;
    }

    function key() {
       var_dump(__METHOD__);
        return $this->position;
    }

    function next() {
        var_dump(__METHOD__);
        ++$this->position;
    }

    function valid() {
        var_dump(__METHOD__);
        return isset($this->array[$this->position]);
    }

}

$it = new myIterator;

foreach($it as $key => $value) {
    //var_dump($key,$value);
    echo $value;
    echo "\n";
}

 

从上面的执行结果看,迭代器的工作流程是这样的:
    1.首先指向数组首
    2.判断是否有效
    3.获取当前值
    4.获取当前key
    5.进入循环,进行当前指针加一操作
    6.判断是否有效(无效停止)
    7.获取当前值
    8.获取当前key
    9.重复5步骤


为什么要使用迭代器?
    该示例中,是用对象做了封装,简化了foreach语句的复杂程度,或是专注于流程,而细节则交给迭代器。
    迭代器它本身的实现都是通过C拓展的,所以自己编写的遍历和PHP自身提供的迭代器是有性能的差异第二个,因为遍历的是对象而不是数组,免不了我们在遍历的时候遇到不少麻烦,即使我们解决了,也不能确保我们应用到的算法是最好的

php中的迭代器

标签:

原文地址:http://www.cnblogs.com/z1298703836/p/4560321.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!