PHP迭代器和迭代的實(shí)現(xiàn)與使用方法分析
本文實(shí)例講述了PHP迭代器和迭代的實(shí)現(xiàn)與使用方法。分享給大家供大家參考,具體如下:
PHP的面向?qū)ο笠嫣峁┝艘粋€(gè)非常聰明的特性,就是,可以使用foreach()
方法通過(guò)循環(huán)方式取出一個(gè)對(duì)象的所有屬性,就像數(shù)組方式一樣,代碼如下:
class Myclass{ public $a = 'php'; public $b = 'onethink'; public $c = 'thinkphp'; } $myclass = new Myclass(); //用foreach()將對(duì)象的屬性循環(huán)出來(lái) foreach($myclass as $key.'=>'.$val){ echo '$'.$key.' = '.$val."<br/>"; } /*返回 $a = php $b = onethink $c = thinkphp */
如果需要實(shí)現(xiàn)更加復(fù)雜的行為,可以通過(guò)一個(gè)iterator
(迭代器)來(lái)實(shí)現(xiàn)
//迭代器接口 interface MyIterator{ //函數(shù)將內(nèi)部指針設(shè)置回?cái)?shù)據(jù)開(kāi)始處 function rewind(); //函數(shù)將判斷數(shù)據(jù)指針的當(dāng)前位置是否還存在更多數(shù)據(jù) function valid(); //函數(shù)將返回?cái)?shù)據(jù)指針的值 function key(); //函數(shù)將返回將返回當(dāng)前數(shù)據(jù)指針的值 function value(); //函數(shù)在數(shù)據(jù)中移動(dòng)數(shù)據(jù)指針的位置 function next(); } //迭代器類(lèi) class ObjectIterator implements MyIterator{ private $obj;//對(duì)象 private $count;//數(shù)據(jù)元素的數(shù)量 private $current;//當(dāng)前指針 function __construct($obj){ $this->obj = $obj; $this->count = count($this->obj->data); } function rewind(){ $this->current = 0; } function valid(){ return $this->current < $this->count; } function key(){ return $this->current; } function value(){ return $this->obj->data[$this->current]; } function next(){ $this->current++; } } interface MyAggregate{ //獲取迭代器 function getIterator(); } class MyObject implements MyAggregate{ public $data = array(); function __construct($in){ $this->data = $in; } function getIterator(){ return new ObjectIterator($this); } } //迭代器的用法 $arr = array(2,4,6,8,10); $myobject = new MyObject($arr); $myiterator = $myobject->getIterator(); for($myiterator->rewind();$myiterator->valid();$myiterator->next()){ $key = $myiterator->key(); $value = $myiterator->value(); echo $key.'=>'.$value; echo "<br/>"; } /*返回 0=>2 1=>4 2=>6 3=>8 4=>10 */
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP設(shè)計(jì)模式之迭代器模式Iterator實(shí)例分析【對(duì)象行為型】
- php設(shè)計(jì)模式之迭代器模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
- PHP設(shè)計(jì)模式之迭代器(Iterator)模式入門(mén)與應(yīng)用詳解
- PHP迭代器和生成器用法實(shí)例分析
- php和C#的yield迭代器實(shí)現(xiàn)方法對(duì)比分析
- PHP設(shè)計(jì)模式之PHP迭代器模式講解
- PHP基于SPL實(shí)現(xiàn)的迭代器模式示例
- PHP聚合式迭代器接口IteratorAggregate用法分析
- PHP迭代器接口Iterator用法分析
- PHP迭代器的內(nèi)部執(zhí)行過(guò)程詳解
- PHP設(shè)計(jì)模式之迭代器模式的深入解析
- PHP中迭代器的簡(jiǎn)單實(shí)現(xiàn)及Yii框架中的迭代器實(shí)現(xiàn)方法示例
相關(guān)文章
PHP超級(jí)全局變量【$GLOBALS,$_SERVER,$_REQUEST等】用法實(shí)例分析
這篇文章主要介紹了PHP超級(jí)全局變量用法,結(jié)合實(shí)例形式分析了PHP中$GLOBALS,$_SERVER,$_REQUEST等超級(jí)全局變量相關(guān)概念、功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2019-12-12非常好用的兩個(gè)PHP函數(shù) serialize()和unserialize()
使用serialize()函數(shù)和unserialize()函數(shù),這兩個(gè)函數(shù)的用法真是絕配,一個(gè)是進(jìn)行序列化存儲(chǔ),另一個(gè)則是進(jìn)行序列化恢復(fù),方便極了2012-02-02php可變長(zhǎng)參數(shù)處理函數(shù)詳解
這篇文章主要介紹了php可變長(zhǎng)參數(shù)處理函數(shù),結(jié)合實(shí)例形式分析了func_num_args()、func_get_arg()及func_get_args()三個(gè)可變長(zhǎng)參數(shù)處理函數(shù)功能及使用方法,需要的朋友可以參考下2017-02-02header跳轉(zhuǎn)和include包含問(wèn)題詳解
昨天下班后,同事反映,最近上線的幾款游戲海外注冊(cè)載入不了樣式文件,需要緊急修復(fù)2012-09-09phpmail類(lèi)發(fā)送郵件函數(shù)代碼
前天要給網(wǎng)站做一個(gè)小功能,就是在用戶(hù)留言的時(shí)候發(fā)郵件通知管理員。我們都知道在PHP里有一個(gè)mail函數(shù),但是要求服務(wù)器要有郵件服務(wù)器的功能,比如簡(jiǎn)單的SMTP或者POP3。但是,如果我們的服務(wù)器沒(méi)有這種功能,那么怎么辦呢2012-02-02使用php將字符串拆分成數(shù)組的幾種常見(jiàn)方法
經(jīng)常會(huì)遇到要把字符串分割成數(shù)組的情況,在Java中只要調(diào)用split(",")方法就能把字符串分割成數(shù)組,在JS中也很簡(jiǎn)單同樣也是調(diào)用split( "," )方法就可以做到,在php中調(diào)用什么方法分割字符串呢?所以本小編給大家介紹了使用php將字符串拆分成數(shù)組的幾種方法2023-11-11php mongodb操作類(lèi) 帶幾個(gè)簡(jiǎn)單的例子
這篇文章主要介紹了php mongodb操作類(lèi) 帶幾個(gè)簡(jiǎn)單的例子,需要的朋友可以參考下2016-08-08