欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

预定义接口-迭代器Iterator

程序员文章站 2022-05-19 18:34:04
...
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  "
" ; } /* foreach循环第一次执行前,先调用rewind,返回到迭代器的第一个元素,开始位置也可控制 第二步执行valid检查当前位置是否有效,有效继续往下执行,无效则循环停止 第三步执行current返回当前元素的值 第四步执行key 返回当前元素的键 第五步:第一次循环结束后执行next向前移动到下一个元素开始下一轮的循环(紧接着跳过rewind,进行valid检测当前位置) 往下next,valid,current,key循环依次执行,直到valid到无效的位置 */

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

更多内容后续补充...

相关标签: php