程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 預定義接口-迭代器Iterator

預定義接口-迭代器Iterator

編輯:關於PHP編程

<?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到無效的位置
*/

內容是自己總結的,有不對的地方,希望能指出!

更多內容後續補充...

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved