迭代器-php預定義介面
阿新 • • 發佈:2021-01-19
迴圈輸出陣列
<?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 functionadd($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迴圈物件,會輸出屬性,而不會輸出屬性中的值