工作原理
1.在第一次迭代之前,執行iterator::rewind()方法。
只運行一次,傳回迭代器的第一個要素,但方法沒有傳回值
2、驗證第一個元素是否有效。
驗證方法可以自訂。如果傳回值是true,繼續執行,如果傳回值是false,則迭代終止。
3.foreach繼續呼叫Iterator。
傳回指定要素的鍵和值。
4.foreach的方法體
var_dump($key,$value)
5.每次迭代後,呼叫Iterator決定下一個元素並重複第二步。
實例
string(18) "myIterator::rewind" //迭代開始前呼叫rewind方法, 返回迭代器的第一個元素, 同時執行$this->position = 1; string(17) "myIterator::valid" //驗證目前元素$this->array[1]是否有效, 有效則繼續執行; string(19) "myIterator::current" // 傳回目前元素對應的值$this->array[0]='firstelement' string(15) "myIterator::key" // 傳回目前元素的鍵$this->position = 1 int(1) //var_dump($key) string(12) "secondelement" //var_dump($value) string(16) "myIterator::next" //往前移動到下一個元素++$this->position=2 string(17) "myIterator::valid" //驗證目前元素$this->array[2]是否有效, 有效則繼續執行; string(19) "myIterator::current" //重複之前的步驟 string(15) "myIterator::key" //重複之前的步驟 int(2) //重複之前的步驟 string(11) "lastelement" //重複先前的步驟 string(16) "myIterator::next" //向前移動到下一個元素++$this->position=3 string(17) "myIterator::valid" //驗證目前元素$this->array[3]是否有效, 無效則退出遍歷
以上就是php迭代器的工作原理分析,希望對大家有幫助。