日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php迭代器作用,PHP迭代器介绍

發布時間:2023/12/20 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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迭代器介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。