PHP迭代器的內部執行過程詳解

2022-10-06 07:18:12 字數 2246 閱讀 4336

複製** **如下:

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裡的定義進行詞法分...