複製** **如下:
class myiterator implements iterator
function rewind()
function current()
function key()
function next()
function valid()
}$it = new myiterator;
foreach($it as $key => $value)
程式執行輸出:
複製** **如下:
string(18) "myiterator::rewind"
string(17) "myiterator::valid"
string(19) "myiterator::current"
string(15) "myiterator::key"
輸出鍵值:int(0)
string(13) "first_element"
string(16) "myiterator::next"
string(17) "myiterator::valid"
string(19) "myiterator::current"
string(15) "myiterator::key"
輸出鍵值:int(1)
string(14) "second_element"
string(16) "myiterator::next"
string(17) "myiterator::valid"
string(19) "myiterator::current"
string(15) "myiterator::key"
輸出鍵值:int(2)
string(12) "last_element"
string(16) "myiterator::next"
string(17) "myiterator::valid"
一般的迭代器內部需要下面的方法:
iterator::current — return the current element 返回當前元素
iterator::key — return the key of the current element 返回當前元素的鍵
iterator::next — move forward to next element 移向下一程式設計客棧個元素
iterator::rewind — rewind the iterator to the first element 重新回到第乙個元素
iterator::valid — checks if current position is valid 檢查當前位置的有效性
如果不是很清楚迭代器的內容工作流程,可以檢視下面的迭代器對陣列的遍歷過程:
複製** **如下:
/*** @author 簡明現代魔法
*/class myiterator implements iterator
}public function rewind()
public function current()
public function key()
public function next()
public function valid() \n";
return $var;
}}$values = array(1,2,3);
$it = new myiterator($values);
foreach ($it as $k => $v)
程式執行結果:
複製** **如下:
倒回第乙個元素
當前元素: 1
檢查有效性: 1
當前元素: 1
當前元素的鍵: 0
此時鍵值對 -- key 0: value 1
移向下乙個元素: 2
當前元素: 2
檢查有效性: 1
當前元素: 2
當前元素的鍵: 1
此時鍵值對 -- key 1: value 2
移向下乙個元素: 3
當前元素: 3
檢查有效性: 1
當前元素: 3
當前元素的鍵: 2
此時鍵值對 -- key 2: value 3
移向下乙個元素:
當前元素:
檢查有效性:
現在就很清晰了吧?
本文標題: php迭代器的內部執行過程詳解
本文位址:
看看PHP迭代器的內部執行過程
下面我們來了解如何實現乙個自定義的迭代器,然後再開始慢慢理解迭代器的內部工作原理。先來看乙個官方的例子 class myiterator implements iterator function rewind function current function key function next f...
php的執行過程
1.我們從未手動開啟過php的相關程序,它是隨著apache的啟動而執行的 2.php通過mod php5.so模組和apache相連 具體說來是sapi,即伺服器應用程式程式設計介面 3.php總共有三個模組 核心 zend引擎 以及擴充套件層 4.php核心用來處理請求 檔案流 錯誤處理等相關操...
php的執行過程
比如我們有乙個php檔案test.php如下 執行php test.php實際是什麼樣的呢?主要過程如下 1 呼叫zend compile file 這其實是個函式指標,預設實現是compile file 這個函式其實就是呼叫lex根據zend language scanner.l裡的定義進行詞法分...