成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP遍歷接口Iterator詳解

chengtao1633 / 853人閱讀

摘要:從手冊中查到的解釋是當(dāng)一個實現(xiàn)了接口的對象,被遍歷時,會自動調(diào)用這些方法。調(diào)用的循序是下面來看一下簡單的代碼以上會輸出

從手冊中查到的解釋是:

Iterator extends Traversable {
/* Methods */
abstract public mixed current ( void )
abstract public scalar key ( void )
abstract public void next ( void )
abstract public void rewind ( void )
abstract public boolean valid ( void )
}

當(dāng)一個實現(xiàn)了Iterator接口的對象,被foreach遍歷時,會自動調(diào)用這些方法。調(diào)用的循序是:
rewind() -> valid() -> current() -> key() -> next()

下面來看一下簡單的代碼:

class myIterator implements Iterator {  
    private $position = 0;  
    private $array = array(  
        "firstelement",  
        "secondelement",  
        "lastelement",  
    );    
  
    public function __construct() {  
        $this->position = 0;  
    }  
  
    function rewind() {  
        var_dump(__METHOD__);  
        $this->position = 0;  
    }  
  
    function current() {  
        var_dump(__METHOD__);  
        return $this->array[$this->position];  
    }  
  
    function key() {  
        var_dump(__METHOD__);  
        return $this->position;  
    }  
  
    function next() {  
        var_dump(__METHOD__);  
        ++$this->position;  
    }  
  
    function valid() {  
        var_dump(__METHOD__);  
        return isset($this->array[$this->position]);  
    }  
}  
  
$it = new myIterator;  
  
foreach($it as $key => $value) {  
    var_dump($key, $value);  
    echo "---------------------------"."
";
}  

以上會輸出:

/Users/thanatos/Web/study/blean.php:15:string "myIterator::rewind" (length=18)
/Users/thanatos/Web/study/blean.php:35:string "myIterator::valid" (length=17)
/Users/thanatos/Web/study/blean.php:20:string "myIterator::current" (length=19)
/Users/thanatos/Web/study/blean.php:25:string "myIterator::key" (length=15)
/Users/thanatos/Web/study/blean.php:43:int 0
/Users/thanatos/Web/study/blean.php:43:string "firstelement" (length=12)
---------------------------
/Users/thanatos/Web/study/blean.php:30:string "myIterator::next" (length=16)
/Users/thanatos/Web/study/blean.php:35:string "myIterator::valid" (length=17)
/Users/thanatos/Web/study/blean.php:20:string "myIterator::current" (length=19)
/Users/thanatos/Web/study/blean.php:25:string "myIterator::key" (length=15)
/Users/thanatos/Web/study/blean.php:43:int 1
/Users/thanatos/Web/study/blean.php:43:string "secondelement" (length=13)
---------------------------
/Users/thanatos/Web/study/blean.php:30:string "myIterator::next" (length=16)
/Users/thanatos/Web/study/blean.php:35:string "myIterator::valid" (length=17)
/Users/thanatos/Web/study/blean.php:20:string "myIterator::current" (length=19)
/Users/thanatos/Web/study/blean.php:25:string "myIterator::key" (length=15)
/Users/thanatos/Web/study/blean.php:43:int 2
/Users/thanatos/Web/study/blean.php:43:string "lastelement" (length=11)
---------------------------
/Users/thanatos/Web/study/blean.php:30:string "myIterator::next" (length=16)
/Users/thanatos/Web/study/blean.php:35:string "myIterator::valid" (length=17)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/23266.html

相關(guān)文章

  • ES6的Iterator對象詳解

    摘要:實現(xiàn)原理創(chuàng)建一個指針對象,指向當(dāng)前數(shù)據(jù)結(jié)構(gòu)的起始位置。也就是說,遍歷器對象本質(zhì)上,就是一個指針對象。具體來說,就是返回一個包含和兩個屬性的對象。接口部署在對象的屬性上可以調(diào)用這個屬性,就得到遍歷器對象。 Iterator實現(xiàn)原理 創(chuàng)建一個指針對象,指向當(dāng)前數(shù)據(jù)結(jié)構(gòu)的起始位置。也就是說,遍歷器對象本質(zhì)上,就是一個指針對象。 第一次調(diào)用指針對象的next方法,可以將指針指向數(shù)據(jù)結(jié)構(gòu)的第一...

    KoreyLee 評論0 收藏0
  • 帶你了解集合世界的fail-fast機制 和 CopyOnWriteArrayList 源碼詳解

    摘要:體現(xiàn)的就是適配器模式。數(shù)組對象集合世界中的機制機制集合世界中比較常見的錯誤檢測機制,防止在對集合進行遍歷過程當(dāng)中,出現(xiàn)意料之外的修改,會通過異常暴力的反應(yīng)出來。而在增強循環(huán)中,集合遍歷是通過進行的。 前言 學(xué)習(xí)情況記錄 時間:week 2 SMART子目標(biāo) :Java 容器 記錄在學(xué)習(xí)Java容器 知識點中,關(guān)于List的重點知識點。 知識點概覽: 容器中的設(shè)計模式 從Array...

    young.li 評論0 收藏0
  • PHP設(shè)計模式之迭代器模式

    摘要:概念迭代器模式,又叫做游標(biāo)模式。另外,當(dāng)需要對聚集有多種方式遍歷時,可以考慮去使用迭代器模式。迭代器模式為遍歷不同的聚集結(jié)構(gòu)提供如開始下一個是否結(jié)束當(dāng)前哪一項等統(tǒng)一的接口。 概念 迭代器模式(Iterator),又叫做游標(biāo)(Cursor)模式。提供一種方法順序訪問一個聚合對象中的各種元素,而又不暴露該對象的內(nèi)部表示。 當(dāng)你需要訪問一個聚合對象,而且不管這些對象是什么都需要遍歷的時候,就...

    陸斌 評論0 收藏0
  • PHP SPL 筆記

    摘要:界面包含四個必須部署的方法下面就是一個部署界面的實例使用方法如下運行結(jié)果如下可以看到,雖然是一個,但是完全可以像那樣操作。示例如下類也支持類方法和方法類和類類和類,只支持遍歷一維數(shù)組。 這幾天,我在學(xué)習(xí)PHP語言中的SPL。 這個東西應(yīng)該屬于PHP中的高級內(nèi)容,看上去很復(fù)雜,但是非常有用,所以我做了長篇筆記。不然記不住,以后要用的時候,還是要從頭學(xué)起。 由于這是供自己參考的筆記,不是教...

    hoohack 評論0 收藏0
  • 詳解NodeList 和 HTMLCollection 和 Array

    摘要:展開的屬性后發(fā)現(xiàn),繼承于一個對象,而這個對象又繼承于對象。這證實了我們對的猜想。是比較新的模型,相比更加完善,不光有元素,還有節(jié)點和。關(guān)于,和的關(guān)系,就是長得像,有個別相似的功能,但是是完全不一樣的東西。 Array,NodeList, HTMLCollection這三個概念和它們之間的關(guān)系有很多做了幾年前端的同學(xué)都搞不清楚,經(jīng)常遇到但是又感覺很陌生,剪不斷理還亂的感覺。今天咱們就來理...

    xietao3 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<