• 预定义接口-迭代器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到无效的位置
    */

    最下面的注释是自己总结的,有不对的地方,希望能指出!

    更多内容后续补充...

  • 相关阅读:
    原码, 反码, 补码 详解
    位移运算符
    ASP.NET中httpmodules与httphandlers全解析
    MySQL count
    真正的能理解CSS中的line-height,height与line-height
    IfcEvent
    IfcWorkCalendarTypeEnum
    IfcSingleProjectInstance
    转换模型
    IfcTypeProduct
  • 原文地址:https://www.cnblogs.com/dytl/p/3727582.html
Copyright © 2020-2023  润新知