您的位置:首页 > 编程语言 > PHP开发

php迭代器的执行过程

2013-04-29 22:40 513 查看
要使用迭代器就要先实现Iterator接口,该接口有以下五个方法:

Iterator::current — 返回当前元素
Iterator::key — 返回当前元素的键
Iterator::next — 向前移动到下一个元素
Iterator::rewind — 返回到迭代器的第一个元素
Iterator::valid — 检查当前位置是否有效

实现该接口的类必须实现这五个方法

<?php
/**
* php迭代器的使用
*/
class MyIterator implements Iterator
{
     private $var = array();

     public function __construct($array)
     {
         if (is_array($array)) {
            $this->var = $array;
         }
     }

     public function rewind() {
         echo "倒回第一个元素\n";
        reset($this->var);
     }

     public function current() {
        $var = current($this->var);
         echo "当前元素: $var\n";
         return $var;
     }

     public function key() {
        $var = key($this->var);
         echo "当前元素的键: $var\n";
         return $var;
     }

     public function next() {
        $var = next($this->var);
         echo "移向下一个元素: $var\n";
         return $var;
     }

     public function valid() {
        $var = $this->current() !== false;
         echo "检查有效性: {$var}\n";
         return $var;
     }
}

$values = array('one','two','three');
$it = new MyIterator($values);

foreach ($it as $k => $v) {
     print "此时键值对 -- key $k: value $v\n\n";
}


以下是程序执行结果:

倒回第一个元素
当前元素: one
检查有效性: 1
当前元素: one
当前元素的键: 0
此时键值对 -- key 0: value one
移向下一个元素: two
当前元素: two
检查有效性: 1
当前元素: two
当前元素的键: 1
此时键值对 -- key 1: value two
移向下一个元素: three
当前元素: three
检查有效性: 1
当前元素: three
当前元素的键: 2
此时键值对 -- key 2: value three
移向下一个元素:
当前元素:
检查有效性:
从上面的结果中很容易看出foreach循环的时候都调用了那些方法了吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: