php迭代器作用,PHP迭代器介绍
迭代器有一個簡單且常見的接口:
function Iterator($array) //構造函數。使需要遍歷的數組作為一個參數
function reset() //設置內部指針指向第一個元素
function end() //設置內部指針指向最后一個元素
function seek($position) //設置內部指針指向一個指定的元素
function next() //返回后一個元素
function previous() //返回前一個元素
?>
通過此接口可在任何時間、任何地點及任何方法輕輕松松執行日常事務(例如數組遍歷)。相對于PHP本身的數組函數,一大優勢在于有了一個為所有數組任務工作的接口,避免了這類情況:一段代碼里用foreach()構造,而另外一段用list和each的組合,然后還有其他地方頻繁使用next()和perv();另一個優勢是現在可以簡單的定位于一個確定的元素并且可以從這里開始任何方式的遍歷。
示例代碼:
< ?php
$iterator = new Iterator($array);
while ($elem = $iterator->next()) { //遍歷數組
echo $elem;
}
$iterator->end(); //反序便利
while ($elem = $iterator->previous()) {
echo $elem;
}
$iterator->seek(5); //從第五元素開始遍歷
while ($elem = $iterator->next()) {
echo $elem;
}
?>
此外,可通過唯一的接口存取所有數組,另一個重要優勢是迭代器的對象結構容許你輕松擴展它的功能。
對象迭代器接口
對象迭代器的代碼十分簡單:
class ObjectIterator extends Iterator {
var $_objectName;
/**
* 構造函數
* 調用初始化方法(參考Iterator::_initialize())
* 做一些特殊的配置
* @參數數組 $array 要遍歷的對象id的數組
* @參數字符串 $objectName 要被創建的對象的類
*/
function ObjectIterator($array, $objectName) {
$this->_initialize($array);
$this->_objectName = $objectName;
}
/**
* 用給出的id返回對象
* @參數對象 $id 標示一個對象
* @返回對象 集合里的下一個對象
* @存取 私有
*/
function _fetchObject($id) {
return new $this->_objectName($id);
}
}
?>
類成員$_objectName代表對象所屬的類它必須被next()和pervious()方法返回。構造函數設置內部變量并且調用初始化函數(已在迭代器類定義)。最重要的事情是_fetchObject()函數封裝了對象創建的代碼,它被next()和pervious()方法調用并且用對象的id作為參數),所有的對象創建代碼都集中在這里,更容易改變和擴展。
這是創建新的一類迭代器的方法:第一、制作構造函數(有一個數組作為參數),調用從迭代器類_initialize()函數;第二、重載 _fetchObject方法去執行任何對象操作。
總結
以上是生活随笔為你收集整理的php迭代器作用,PHP迭代器介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: graphicsmagick im4ja
- 下一篇: php7和php8内核有区别吗,不要在P