婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php遍歷對象的方法

php遍歷對象的方法

熱門標(biāo)簽:天津電銷外呼系統(tǒng)違法嗎 手機(jī)外呼系統(tǒng)什么原理 400電話個人能不能辦理 凱立德地鐵站地圖標(biāo)注 合肥ai電銷機(jī)器人費(fèi)用 溫州外呼系統(tǒng)招商 上海400客服電話怎么申請 銀行信貸電話機(jī)器人 滄州電銷外呼系統(tǒng)價(jià)格

對于php來說,foreach是非常方便好用的一個語法,幾乎對于每一個PHPer它都是日常接觸最多的請求之一。那么對象是否能通過foreach來遍歷呢?

答案是肯定的,但是有個條件,那就是對象的遍歷只能獲得它的公共屬性。

// 普通遍歷
class A
{
    public $a1 = '1';
    public $a2 = '2';
    public $a3 = '3';

    private $a4 = '4';
    protected $a5 = '5';

    public $a6 = '6';

    public function test()
    {
        echo 'test';
    }
}
$a = new A();
foreach ($a as $k => $v) {
    echo $k, '===', $v, PHP_EOL;
}

// a1===1
// a2===2
// a3===3
// a6===6

不管是方法還是受保護(hù)或者私有的變量,都無法遍歷出來。只有公共的屬性才能被遍歷出來。其實(shí),我們之前在講設(shè)計(jì)模式時講過的迭代器模式就是專門用來進(jìn)行對象遍歷的,而且PHP已經(jīng)為我們準(zhǔn)備好了相關(guān)的接口,我們只需要去實(shí)現(xiàn)這個接口就可以完成迭代器模式的創(chuàng)建了。具體的內(nèi)容可以參考之前的設(shè)計(jì)模式系列文章:PHP設(shè)計(jì)模式之迭代器模式

// 實(shí)現(xiàn)迭代器接口
class B implements Iterator
{
    private $var = [];

    public function __construct($array)
    {
        if (is_array($array)) {
            $this->var = $array;
        }
    }

    public function rewind()
    {
        echo "rewinding\n";
        reset($this->var);
    }

    public function current()
    {
        $var = current($this->var);
        echo "current: $var\n";
        return $var;
    }

    public function key()
    {
        $var = key($this->var);
        echo "key: $var\n";
        return $var;
    }

    public function next()
    {
        $var = next($this->var);
        echo "next: $var\n";
        return $var;
    }

    public function valid()
    {
        $var = $this->current() !== false;
        echo "valid: {$var}\n";
        return $var;
    }
}

$b = new B([1, 2, 3, 4]);

foreach ($b as $k => $v) {
    echo $k, '===', $v, PHP_EOL;
}

// rewinding
// current: 1
// valid: 1
// current: 1
// key: 0
// 0===1
// next: 2
// current: 2
// valid: 1
// current: 2
// key: 1
// 1===2
// next: 3
// current: 3
// valid: 1
// current: 3
// key: 2
// 2===3
// next: 4
// current: 4
// valid: 1
// current: 4
// key: 3
// 3===4
// next:
// current:
// valid:

假如今天的文章只是講之前講過的迭代器模式,那就太沒意思了,所以,咱們還要來學(xué)習(xí)一個更有意思的應(yīng)用。那就是讓對象可以像數(shù)組一樣進(jìn)行操作。這個其實(shí)也是使用PHP早已為我們準(zhǔn)備好的一個接口:ArrayAccess。

// 讓類可以像數(shù)組一樣操作
class C implements ArrayAccess, IteratorAggregate
{
    private $container = [];
    public function __construct()
    {
        $this->container = [
            "one" => 1,
            "two" => 2,
            "three" => 3,
        ];
    }
    public function offsetSet($offset, $value)
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }
    public function offsetGet($offset)
    {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }

    public function getIterator() {
        return new B($this->container);
    }
}

$c = new C();
var_dump($c);

$c['four'] = 4;
var_dump($c);

$c[] = 5;
$c[] = 6;
var_dump($c);

foreach($c as $k=>$v){
    echo $k, '===', $v, PHP_EOL;
}

// rewinding
// current: 1
// valid: 1
// current: 1
// key: one
// one===1
// next: 2
// current: 2
// valid: 1
// current: 2
// key: two
// two===2
// next: 3
// current: 3
// valid: 1
// current: 3
// key: three
// three===3
// next: 4
// current: 4
// valid: 1
// current: 4
// key: four
// four===4
// next: 5
// current: 5
// valid: 1
// current: 5
// key: 0
// 0===5
// next: 6
// current: 6
// valid: 1
// current: 6
// key: 1
// 1===6
// next: 
// current: 
// valid: 

這個接口需要我們實(shí)現(xiàn)四個方法:

  • offsetSet($offset, $value),根據(jù)偏移量設(shè)置值
  • offsetExists($offset),根據(jù)偏移量確定是否存在內(nèi)容
  • offsetUnset($offset),根據(jù)偏移量刪除內(nèi)容
  • offsetGet($offset),根據(jù)依稀量獲取內(nèi)容

這里的偏移量就是我們常說的下標(biāo)。通過實(shí)現(xiàn)這四個方法,我們就可以像操作數(shù)組一樣的操作對象。當(dāng)然,日常開發(fā)中我們可能并不會很經(jīng)常的使用包括迭代器在內(nèi)的這些對象遍歷的能力。通常我們會直接去將對象轉(zhuǎn)換成數(shù)組 (array) obj 來進(jìn)行下一步的操作。不過,在java中,特別是JavaBean中會經(jīng)常在類的內(nèi)部有一個 List 為自己的對象來表示自身的集合狀態(tài)。通過對比,我們發(fā)現(xiàn)PHP也完全可以實(shí)現(xiàn)這樣的能力,而且使用迭代器和 ArrayAccess 接口還能夠更方便的實(shí)現(xiàn)類似的能力。這是非常有用的一種知識擴(kuò)展,或許下一個項(xiàng)目中你就能運(yùn)用上這些能力哦!

測試代碼: github.com/zhangyue050…

以上就是php遍歷對象的方法的詳細(xì)內(nèi)容,更多關(guān)于php遍歷對象的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • php中foreach遍歷類對象的總結(jié)
  • PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之對象的遍歷操作示例
  • PHP簡單遍歷對象示例
  • PHP var_dump遍歷對象屬性的函數(shù)與應(yīng)用代碼

標(biāo)簽:怒江 溫州 洛陽 白城 金華 赤峰 七臺河 酒泉

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php遍歷對象的方法》,本文關(guān)鍵詞  php,遍歷,對象,的,方法,php,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php遍歷對象的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于php遍歷對象的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲成人动漫一区| 国产精品丝袜一区| 欧美少妇xxx| 欧洲生活片亚洲生活在线观看| 国产成人在线观看| gogo大胆日本视频一区| 成人h动漫精品| 色综合久久精品| 欧美精品久久久久久久多人混战| 欧美精品久久久久久久多人混战| 欧美妇女性影城| 欧美xxxxxxxx| 中文字幕av不卡| 有坂深雪av一区二区精品| 一区二区三区精品| 午夜激情久久久| 国产一区在线看| 91麻豆精品在线观看| 精品视频一区三区九区| 日韩视频免费观看高清在线视频| 欧美成人激情免费网| 中文字幕一区日韩精品欧美| 亚洲最新视频在线播放| 日本色综合中文字幕| 国产成人在线看| 欧美日韩在线观看一区二区| 久久久久久久综合日本| 有码一区二区三区| 激情深爱一区二区| 在线观看视频91| 精品国产sm最大网站| 依依成人综合视频| 国产福利精品导航| 欧美日免费三级在线| 中文字幕成人av| 日本视频在线一区| 99久久婷婷国产综合精品电影 | 一区二区在线观看av| 香蕉乱码成人久久天堂爱免费| 国内一区二区视频| 欧美日韩精品一区二区| 国产精品美女久久福利网站| 免费看欧美女人艹b| 99精品欧美一区二区三区小说| 日韩精品专区在线影院观看| 亚洲激情五月婷婷| 风间由美一区二区三区在线观看| 6080午夜不卡| 亚洲大片免费看| 91视视频在线直接观看在线看网页在线看| 在线观看91精品国产麻豆| 亚洲欧洲一区二区在线播放| 精品系列免费在线观看| 666欧美在线视频| 午夜精品在线看| 色婷婷亚洲一区二区三区| 中文一区在线播放| 精品一区二区免费在线观看| 欧美午夜精品一区二区蜜桃| 一区二区三区在线视频观看| 国产高清一区日本| 久久综合九色综合97_久久久| 麻豆国产一区二区| 日韩一区二区在线看| 午夜久久久久久电影| 欧美群妇大交群的观看方式| 亚洲国产日韩一级| 欧美精选一区二区| 日韩国产欧美视频| 日韩色在线观看| 久久国产视频网| 久久久99久久精品欧美| 国产精品一区二区免费不卡 | 91麻豆精品久久久久蜜臀| 亚洲免费在线观看| 91久久线看在观草草青青 | 日韩欧美一卡二卡| 久久精品国产精品亚洲红杏| 日韩免费视频线观看| 狠狠色综合播放一区二区| 国产亚洲欧美在线| av午夜一区麻豆| 亚洲已满18点击进入久久| 欧美日韩国产综合视频在线观看| 婷婷开心激情综合| 欧美不卡一区二区| 成人免费毛片app| 亚洲黄色小说网站| 欧美成人伊人久久综合网| 国产乱人伦精品一区二区在线观看| 日韩欧美一区中文| 欧美日韩在线亚洲一区蜜芽| 天天综合色天天| 精品国产一区二区三区av性色| 国产麻豆视频精品| 亚洲免费色视频| 欧美一卡二卡在线| 成人性生交大片免费 | 精品国产免费一区二区三区四区| 国产剧情一区二区| 亚洲码国产岛国毛片在线| 911精品国产一区二区在线| 国产精品一区二区久久不卡 | 日韩欧美国产一二三区| 国产成人8x视频一区二区| 亚洲一二三级电影| 久久这里只有精品首页| 色乱码一区二区三区88| 麻豆久久一区二区| 一区二区三区精密机械公司| 久久久久久久久久久电影| 欧美日韩中字一区| 国产99久久久国产精品| 亚洲18色成人| 亚洲国产精品99久久久久久久久| 欧美日韩的一区二区| 国产精品69毛片高清亚洲| 日韩av一区二区三区| 一区二区在线观看免费| 国产亚洲污的网站| 欧美xxxxx牲另类人与| 欧美日韩一区二区三区四区五区| 成人精品免费视频| 麻豆专区一区二区三区四区五区| 一区二区三区国产| 国产精品第13页| 欧美国产激情二区三区| 精品不卡在线视频| 日韩欧美一二三| 欧美丰满少妇xxxxx高潮对白| 一本到一区二区三区| 国产高清视频一区| 日韩 欧美一区二区三区| 亚洲电影你懂得| 一区二区不卡在线播放| 亚洲欧美日韩国产中文在线| 欧美激情一区三区| 久久精品欧美一区二区三区不卡| 日韩一级大片在线| 日韩欧美国产一二三区| 日韩欧美久久久| 日韩欧美国产系列| 精品成人佐山爱一区二区| 久久综合色8888| 精品毛片乱码1区2区3区| 日韩欧美激情在线| 欧美mv日韩mv亚洲| 精品国产一区二区三区久久影院 | 欧美在线你懂得| 在线精品视频一区二区| 欧洲国内综合视频| 欧美午夜精品一区二区三区| 欧美日韩大陆一区二区| 欧美一级片在线观看| 日韩欧美国产一区二区在线播放| 日韩亚洲国产中文字幕欧美| 欧美电视剧在线看免费| 精品少妇一区二区三区视频免付费| 精品盗摄一区二区三区| 中文字幕国产一区| 亚洲精品欧美在线| 天天影视网天天综合色在线播放 | 亚洲成人中文在线| 亚洲动漫第一页| 麻豆91免费看| 成人成人成人在线视频| 欧美性猛交xxxx黑人交| 日韩欧美一区在线| 久久精品这里都是精品| 亚洲欧美日韩中文播放 | 亚洲特黄一级片| 日韩综合一区二区| 国产成人午夜片在线观看高清观看| 成人精品免费网站| 在线不卡中文字幕播放| 久久久99精品免费观看不卡| 亚洲一区二区三区三| 狠狠色综合色综合网络| 91精品福利在线| 久久久精品国产免费观看同学| 亚洲欧美激情在线| 免费观看在线综合色| 91在线视频18| 久久亚洲欧美国产精品乐播 | 欧美系列一区二区| 久久你懂得1024| 一区二区三区免费| 国产高清在线观看免费不卡| 欧美日本在线看| 国产精品国产自产拍高清av | 国产suv精品一区二区6| 欧美少妇一区二区| 国产欧美一二三区| 久久99久久久久| 欧美羞羞免费网站| 中文字幕亚洲电影| 国模大尺度一区二区三区| 91麻豆精品国产自产在线观看一区 | 久久久五月婷婷| 日本美女一区二区三区视频|