亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > php中foreach遍歷類對象的總結

php中foreach遍歷類對象的總結

熱門標簽:釘釘打卡地圖標注 注冊400電話申請 福州人工外呼系統哪家強 地圖標注平臺怎么給錢注冊 常州地圖標注服務商 安裝電銷外呼系統 新河科技智能外呼系統怎么樣 百度商鋪地圖標注 衡水外呼系統平臺

foreach 遍歷數組很常見,同樣foreach也可以遍歷對象

做如下測試:

class my
{
	public $a = 'a';
	protected $b = 'b';
	private $c = 'c';
	private $data = array('fantasy','windows','linux');
	// 內部foreach遍歷class
	function traversable()
	{
		foreach($this as $key=>$val)
		{
			echo $key.'=>';
			print_r($val);
			echo 'br>';
		}
	}
}
$m = new my();
// 外部foreach遍歷class
foreach($m as $key=>$val)
{
	echo $key.'=>';
	print_r($val);
	echo 'br>';
}
echo '--------------------------br>';
// 內部foreach遍歷class
$m->traversable();

輸出結果如下:

a=>a

--------------------------

a=>a

b=>b

c=>c

由此可知,對于外部的foreach遍歷是沒有權限訪問 protected private 這兩個修飾的屬性的,而在class內部是有權限訪問,foreach可以遍歷所有的屬性。

今天在寫PDO的時候發現可以這樣寫: 

foreach($db->query('SELECT * FROM tab') as $row)
{
    print_r($row);
}


這樣快速的獲取了全部查詢結果,可奇怪的是$this->query() 返回的是 object類型 PDOStatement ,var_dump()打印出來的結果是這樣的:

object(PDOStatement)#2 (1) {
  ["queryString"]=>
  string(18) "SELECT * FROM user"
}


PDOStatement里面就一個public屬性 queryString  并且foreach也沒有出現這個值,這樣的情況就不是簡單的對屬性進行遍歷了,而是class繼承了iterator迭代器,在foreach的時候會執行class里面的迭代方式,遍歷迭代器指定的數據

關于迭代器看下面的例子:

class test implements Iterator
{
	public $a = 'a';
	private $data = array('apple','banlance','current');
	private $point = 0;
	public function __construct()
	{
		$this->point = 0;
	}
	public function current()
	{
		return $this->data[$this->point];
	}
	public function key()
	{
		return $this->point;
	}
	public function next()
	{
		++$this->point;
	}
	public function rewind()
	{
		$this->point=0;
	}
	public function valid()
	{
		return isset($this->data[$this->point]);
	}
}
$t = new test();
foreach($t as $val)
{
	print_r($val);
	echo 'br>';
}

輸出結果如下:

apple

banlance

test class 實現iterator的接口,foreach調用的時候會使用這個接口方法,調用過程大致如下面偽代碼:

// 迭代過程偽代碼
while(valid)
{
span style="white-space:pre">	/span>current/key
span style="white-space:pre">	/span>next
}
rewind

so,之前的foreach對class的處理過程是一種默認方法,如果是繼承iterator的class被foreach遍歷的時候是上面這種方式

由此情況去套用 PDO的寫法還是行不通,因為如果我們var_dump上面的哪個test類結果是這樣的:

test Object
(
    [a] => a
    [data:test:private] => Array
        (
            [0] => apple
            [1] => banlance
            [2] => current
        )
 
    [point:test:private] => 0
)

但是當我們var_dump $db->query返回的對象時并沒有見到point這個iterator接口中定義的屬性以及遍歷的數據 $data;

由此我們可以猜測PDOStatement繼承了一種迭代的接口但是并不是iterator

查看手冊可以發現:

PDOStatement implements Traversable

查看Traversable的介紹如下圖:

由此明白了,PDOStatement的迭代實現都是在內部,繼承iterator是php腳本的實現方式。

大致總結下:

foreach是可以遍歷數組的,也可以遍歷對象。對象只能羅列出public的屬性,如果想要foreach羅列出保護的屬性可以讓class繼承iterator并實現其中的方法,這樣foreach遍歷一個class的時候是按照class內部實現的iterator進行處理的。
-------------------------------------------------------------
PDO的問題:

PDO::query() 返回的是對象 PDOStatement (繼承的Traversable這個空接口,必須由Iterator or iteratorAggregate 接口實現)。
PDOStatement 實現了Iterator接口的方法,其實現方法中操作的就是非public修飾的屬性,這個屬性里面存儲的是查詢結果集。
至此,foreach($db->query('sql..') as $row) 的執行過程明白了

以上就是php中foreach遍歷類對象的總結的詳細內容,更多關于php中foreach遍歷類對象的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP面向對象程序設計之對象的遍歷操作示例
  • PHP簡單遍歷對象示例
  • PHP var_dump遍歷對象屬性的函數與應用代碼
  • php遍歷對象的方法

標簽:遼陽 白城 鷹潭 六安 柳州 克拉瑪依 鶴崗 唐山

巨人網絡通訊聲明:本文標題《php中foreach遍歷類對象的總結》,本文關鍵詞  php,中,foreach,遍歷,類,對象,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php中foreach遍歷類對象的總結》相關的同類信息!
  • 本頁收集關于php中foreach遍歷類對象的總結的相關信息資訊供網民參考!
  • 推薦文章
    美女免费毛片| 午夜激情视频在线播放| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美激情一区二区三区中文字幕| 999精品视频在线| 日韩在线观看免费完整版视频| 亚洲天堂在线播放| 国产原创中文字幕| 欧美爱色| 99久久精品国产高清一区二区 | 国产韩国精品一区二区三区| 亚欧视频在线| 成人免费网站久久久| 精品国产一区二区三区久 | 黄色福利片| 精品视频一区二区三区免费| 一级女性全黄生活片免费| 高清一级做a爱过程不卡视频| 台湾毛片| 欧美日本韩国| 九九久久99| 国产一区二区精品尤物| 成人在免费观看视频国产| 国产高清在线精品一区二区| 亚洲第一色在线| 国产成人啪精品| 国产激情视频在线观看| 精品在线观看国产| 久久精品人人做人人爽97| 色综合久久天天综合观看| 色综合久久天天综合观看| 九九九在线视频| 国产视频一区在线| 美女被草网站| 日本乱中文字幕系列| 欧美激情一区二区三区中文字幕| a级黄色毛片免费播放视频| 免费的黄视频| 欧美激情在线精品video| 四虎影视久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 人人干人人草| 四虎久久影院| 国产综合成人观看在线| 免费国产在线观看| 91麻豆精品国产高清在线| 999久久久免费精品国产牛牛| 午夜精品国产自在现线拍| 国产麻豆精品| 九九久久国产精品| 国产麻豆精品| 国产欧美精品| 精品美女| 午夜久久网| 成人影视在线观看| 黄色福利| 青青青草视频在线观看| 台湾毛片| 色综合久久天天综合绕观看| 超级乱淫黄漫画免费| 国产一级强片在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 亚洲精品永久一区| 二级片在线观看| 九九九在线视频| 日韩中文字幕在线观看视频| 尤物视频网站在线| 青青青草视频在线观看| 欧美18性精品| 久久国产一久久高清| 天堂网中文字幕| 中文字幕Aⅴ资源网| 日韩中文字幕在线亚洲一区| 国产一区免费观看| 美女免费精品视频在线观看| 国产91精品一区二区| 青草国产在线| 亚洲精品中文字幕久久久久久| 国产一区二区高清视频| 亚久久伊人精品青青草原2020| 国产视频一区二区三区四区| 国产亚洲精品aaa大片| 二级片在线观看| 国产成人精品影视| 日韩一级黄色| 午夜欧美福利| 欧美α片无限看在线观看免费| 精品久久久久久免费影院| 欧美日本免费| 精品久久久久久影院免费| 国产国语对白一级毛片| 99热热久久| 欧美激情一区二区三区视频 | 欧美激情一区二区三区视频高清| 国产成人啪精品视频免费软件| 一级女性全黄生活片免费| 黄色福利片| 麻豆污视频| 久草免费在线观看| 日本免费乱理伦片在线观看2018| 一级毛片视频免费| 日韩中文字幕在线观看视频| 国产一区二区精品在线观看| 日本乱中文字幕系列| 成人免费观看的视频黄页| 999久久久免费精品国产牛牛| 日韩免费片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 韩国妈妈的朋友在线播放| 九九免费精品视频| 日韩专区一区| 精品久久久久久中文| 韩国三级香港三级日本三级| 欧美1卡一卡二卡三新区| 天天色色色| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 久草免费在线色站| 99热精品一区| 欧美18性精品| 欧美大片毛片aaa免费看| 亚州视频一区二区| 久久99欧美| 国产麻豆精品hdvideoss| 国产视频一区二区在线播放| 免费一级生活片| 久久精品大片| 亚洲精品中文一区不卡| 成人免费观看视频| 国产一区国产二区国产三区| 日本乱中文字幕系列| 99色视频在线观看| 99久久精品国产片| 亚洲精品永久一区| 国产麻豆精品视频| 国产不卡福利| 国产视频久久久| 久久精品店| 欧美爱色| 亚洲 男人 天堂| 91麻豆国产福利精品| 99久久精品国产片| 日本特黄特黄aaaaa大片| 国产欧美精品| 国产网站免费在线观看| 亚洲精品久久久中文字| 国产韩国精品一区二区三区| 中文字幕97| 一本伊大人香蕉高清在线观看| 天天做人人爱夜夜爽2020毛片| 黄视频网站免费观看| 成人免费高清视频| 高清一级片| 日韩欧美一二三区| 午夜激情视频在线播放| 毛片电影网| 99热精品在线| 999精品视频在线| 国产一区二区精品尤物| 免费国产在线视频| a级精品九九九大片免费看| 成人影视在线播放| 久久国产影视免费精品| 久久国产精品永久免费网站| 青青久在线视频| 日本伦理片网站| 在线观看导航| 国产网站免费观看| 国产91视频网| 欧美一区二区三区性| 精品在线视频播放| 日韩字幕在线| 亚洲 激情| 午夜激情视频在线播放| 精品久久久久久中文字幕一区| 日日夜人人澡人人澡人人看免| 国产麻豆精品| 高清一级毛片一本到免费观看| 日本乱中文字幕系列| 在线观看导航| 一级毛片视频在线观看| 国产一区二区精品尤物| 成人a大片在线观看| 国产精品自拍在线| 97视频免费在线| 亚洲第一页乱| 韩国毛片 免费| 欧美一区二区三区性| 亚洲第一视频在线播放| 黄视频网站免费观看| 国产伦精品一区二区三区在线观看| 天天色成人| 日韩专区第一页| 欧美电影免费看大全| 国产视频久久久| 国产精品自拍在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 你懂的国产精品| 成人影视在线播放| 国产精品免费精品自在线观看| 夜夜操天天爽|