PHP預(yù)定義接口——Iterator用法示例
本文實(shí)例講述了PHP預(yù)定義接口——Iterator用法。分享給大家供大家參考,具體如下:
Iterator(迭代器)接口
可在內(nèi)部迭代自己的外部迭代器或類的接口。
接口摘要
Iterator extends Traversable {
/* 方法 */
abstract public current ( void ) : mixed
abstract public key ( void ) : scalar
abstract public next ( void ) : void
abstract public rewind ( void ) : void
abstract public valid ( void ) : bool
}
例:
<?php
class myIterator implements Iterator
{
private $position = 0;
private $array = array(
'first_element',
'second_element',
'last_element',
);
/**
* 重置鍵的位置
*/
public function rewind(): void
{
var_dump(__METHOD__);
$this->position = 0;
}
/**
* 返回當(dāng)前元素
*/
public function current()
{
var_dump(__METHOD__);
return $this->array[$this->position];
}
/**
* 返回當(dāng)前元素的鍵
* @return int
*/
public function key(): int
{
var_dump(__METHOD__);
return $this->position;
}
/**
* 將鍵移動(dòng)到下一位
*/
public function next(): void
{
var_dump(__METHOD__);
++$this->position;
}
/**
* 判斷鍵所在位置的元素是否存在
* @return bool
*/
public function valid(): bool
{
var_dump(__METHOD__);
return isset($this->array[$this->position]);
}
}
$it = new myIterator;
foreach ($it as $key => $value) {
var_dump($key, $value);
echo "\n";
}
輸出結(jié)果:
string 'myIterator::rewind' (length=18)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 0
string 'first_element' (length=13)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 1
string 'second_element' (length=14)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 2
string 'last_element' (length=12)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
由結(jié)果可知,當(dāng)類實(shí)現(xiàn)了Iterator接口,實(shí)現(xiàn)改類實(shí)例數(shù)據(jù)集的時(shí)候首先會(huì)將數(shù)據(jù)集的鍵重置,然后逐步后移,每次都會(huì)進(jìn)行然后返回當(dāng)前元素以及當(dāng)前鍵。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
php strlen mb_strlen計(jì)算中英文混排字符串長(zhǎng)度
在php中常見(jiàn)的計(jì)算字符串長(zhǎng)度的函數(shù)有:strlen和mb_strlen,下面是對(duì)這兩個(gè)函數(shù)的比較說(shuō)明(編碼方式UTF8)2009-07-07
Fatal error: Allowed memory size of 134217728 bytes exhauste
這篇文章主要介紹了Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)錯(cuò)誤的解決方法,需要的朋友可以參考下2014-11-11
WordPress中用于檢索模版的相關(guān)PHP函數(shù)使用解析
這篇文章主要介紹了WordPress中用于檢索模版的相關(guān)PHP函數(shù)使用解析,包括索模板的函數(shù)的使用,要的朋友可以參考下2015-12-12
shopex主機(jī)報(bào)錯(cuò)誤請(qǐng)求解決方案(No such file or directory)
最近vps客戶和服務(wù)托管客戶安裝了shopex網(wǎng)店系統(tǒng),他們的主機(jī)都報(bào)錯(cuò),錯(cuò)誤特點(diǎn)一樣,針對(duì)這個(gè)錯(cuò)誤我司技術(shù)推出shopex主機(jī)報(bào)錯(cuò)誤請(qǐng)求解決方案,希望能給予各位一點(diǎn)幫助2011-12-12
對(duì)Session和Cookie的區(qū)分與解釋
對(duì)Session和Cookie的區(qū)分與解釋...2007-03-03
PHP Session_Regenerate_ID函數(shù)雙釋放內(nèi)存破壞漏洞
PHP Session_Regenerate_ID函數(shù)存在雙釋放內(nèi)容破壞問(wèn)題,遠(yuǎn)程攻擊者可利用此漏洞對(duì)應(yīng)用程序進(jìn)行拒絕服務(wù)攻擊,可能導(dǎo)致任意指令執(zhí)行。2011-01-01
PHP微信開(kāi)發(fā)用Cache 解決數(shù)據(jù)緩存
本文主要介紹,解決PHP微信開(kāi)發(fā)時(shí)數(shù)據(jù)緩存的問(wèn)題,這里用Cache 類舉例說(shuō)明,具有參考價(jià)值,感興趣的小伙伴可以參考下2016-07-07

