PHP头条
热点:

预定义接口-迭代器Iterator


<?php
/*
可在内部迭代自己的外部迭代器或类的接口。
Iterator  extends Traversable  {
abstract public mixed current  ( void )
abstract public scalar key  ( void )
abstract public void next  ( void )
abstract public void rewind  ( void )
abstract public boolean valid  ( void )
}
*/
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  $this -> array [ $this -> position ];
    }

    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 ) {
     print_r( $key.'/'.$value );
     echo  "<br />" ;
}

/*
foreach循环第一次执行前,先调用rewind,返回到迭代器的第一个元素,开始位置也可控制
第二步执行valid检查当前位置是否有效,有效继续往下执行,无效则循环停止
第三步执行current返回当前元素的值
第四步执行key 返回当前元素的键
第五步:第一次循环结束后执行next向前移动到下一个元素开始下一轮的循环(紧接着跳过rewind,进行valid检测当前位置)
往下next,valid,current,key循环依次执行,直到valid到无效的位置
*/

内容是自己总结的,有不对的地方,希望能指出!

更多内容后续补充...

 

www.phpzy.comtrue/php/9116.htmlTechArticle预定义接口-迭代器Iterator ? php /* 可在内部迭代自己的外部迭代器或类的接口。Iterator extends Traversable {abstract public mixed current ( void )abstract public scalar key ( void )abstract public void next ( void )...

相关文章

相关频道:

PHP之友评论

今天推荐