91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中Iterator迭代對象屬性的使用方法

發布時間:2020-10-10 17:28:34 來源:億速云 閱讀:101 作者:小新 欄目:編程語言

小編給大家分享一下php中Iterator迭代對象屬性的使用方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

foreach用法和之前的數組遍歷是一樣的,只不過這里遍歷的key是屬性名,value是屬性值。在類外部遍歷時,只能遍歷到public屬性的,因為其它的都是受保護的,類外部不可見。

class HardDiskDrive {

    public $brand;
    public $color;
    public $cpu;
    public $workState;

    protected $memory;
    protected $hardDisk;

    private $price;

    public function __construct($brand, $color, $cpu, $workState, $memory, $hardDisk, $price) {

        $this->brand = $brand;
        $this->color = $color;
        $this->cpu   = $cpu;
        $this->workState = $workState;
        $this->memory = $memory;
        $this->hardDisk = $hardDisk;
        $this->price = $price;
    }

}

$hardDiskDrive = new HardDiskDrive('希捷', 'silver', 'tencent', 'well', '1T', 'hard', '$456');

foreach ($hardDiskDrive as $property => $value) {

    var_dump($property, $value);
    echo '<br>';
}

輸出結果為:

string(5) "brand" string(6) "希捷" 
string(5) "color" string(6) "silver" 
string(3) "cpu" string(7) "tencent" 
string(9) "workState" string(4) "well"

通過輸出結果我們也可以看得出來常規遍歷是無法訪問受保護的屬性的。
如果我們想遍歷出對象的所有屬性,就需要控制foreach的行為,就需要給類對象,提供更多的功能,需要繼承自Iterator的接口:
該接口,實現了foreach需要的每個操作。foreach的執行流程如下圖:

php中Iterator迭代對象屬性的使用方法

看圖例中,foreach中有幾個關鍵步驟:5個。

而Iterator迭代器中所要求的實現的5個方法,就是用來幫助foreach,實現在遍歷對象時的5個關鍵步驟:

當foreach去遍歷對象時, 如果發現對象實現了Ierator接口, 則執行以上5個步驟時, 不是foreach的默認行為, 而是調用對象的對應方法即可:

php中Iterator迭代對象屬性的使用方法

示例代碼:

class Team implements Iterator {

    //private $name = 'itbsl';
    //private $age  = 25;
    //private $hobby = 'fishing';

    private $info = ['itbsl', 25, 'fishing'];

    public function rewind()
    {
        reset($this->info); //重置數組指針
    }

    public function valid()
    {
        //如果為null,表示沒有元素,返回false
        //如果不為null,返回true

        return !is_null(key($this->info));
    }

    public function current()
    {
        return current($this->info);
    }

    public function key()
    {
        return key($this->info);
    }

    public function next()
    {
        return next($this->info);
    }

}

$team = new Team();

foreach ($team as $property => $value) {

    var_dump($property, $value);
    echo '<br>';
}

以上是php中Iterator迭代對象屬性的使用方法的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳西县| 天气| 大名县| 祁门县| 桦南县| 朝阳市| 吉林市| 阿克苏市| 凤凰县| 新蔡县| 塘沽区| 綦江县| 合肥市| 仁布县| 庆阳市| 泗洪县| 曲靖市| 永昌县| 宜春市| 莱州市| 琼结县| 东兰县| 高要市| 乐至县| 清新县| 清丰县| 铁岭县| 长子县| 德江县| 定陶县| 汾西县| 南华县| 滨州市| 甘肃省| 兖州市| 石家庄市| 富川| 上犹县| 盐源县| 历史| 桐庐县|