1. 程式人生 > 實用技巧 >迭代器-php預定義介面

迭代器-php預定義介面

迴圈輸出陣列

  

<?php 

    $arr=["小王","小杜","小高","小劉"];
    //重置陣列指標,並且指向陣列中第一個元素
    reset($arr);
    while(key($arr)!==null){  //驗證鍵是否有效
        echo key($arr)."-". current($arr)."<br>";
        //指標下移
        next($arr);
    }
?>

  

使用預定義介面 實現介面的方法,在我們foreach迴圈的時候,會自動呼叫方法

<?php

    //建立一個類  並實現預定義介面
class DieDai implements Iterator{ private $list=array(); //實現預定義中的介面方法 //實現重置指標方法 public function rewind(){ reset($this->list); } //實現值的方法 public function current(){ return current($this->list); } //實現驗證方法
public function valid(){ return key($this->list)!==null; } //實現當前元素的鍵 public function key(){ return key($this->list); } //實現指標下移 public function next(){ next($this->list); } public function
add($name){ $this->list[]=$name; } } $obj= new DieDai(); $obj->add("小杜"); $obj->add("小王"); $obj->add("小高"); $obj->add("小劉"); foreach($obj as $k=>$v){ echo $k."----".$v."<br>"; }

注意:

  如果不實現介面,那foreach迴圈物件,會輸出屬性,而不會輸出屬性中的值