php中对象的遍历输出,PHP中的对象遍历技巧
PHP中的對(duì)象遍歷
對(duì)象的遍歷,主要是指遍歷對(duì)象中的,對(duì)外部可見(jiàn)屬性。實(shí)際上就是用訪問(wèn)限制符public聲明的屬性,這點(diǎn)大家肯定很熟悉了。并且,在php中,遍歷對(duì)象居然與遍歷數(shù)組一樣,都可以用使用foreach語(yǔ)句。
好,下面用實(shí)例來(lái)說(shuō)明:
class Demo
{
public $name;
public $age;
public $salary;
public function __construct($name,$age,$salary)
{
$this->name = $name;
$this->age = $age;
$this->salary = $salary;
}
}
//訪問(wèn)
$obj = new Demo('peter', 28, 3800);
foreach ($obj as $key=>$value)
{
echo $key.'=>'.$value.'
';
}
訪問(wèn)結(jié)果是:
name=>peter
age=>28
salary=>3800
但是一個(gè)對(duì)象中,很多時(shí)候,還有私有屬性和受保護(hù)的屬性,這些屬性外部是不可訪問(wèn),那么應(yīng)該如何遍歷呢?很簡(jiǎn)單,盡管這些屬性外部不可見(jiàn),但是在類的內(nèi)部都是可見(jiàn)的。我們只要在類的內(nèi)部,聲明一個(gè)公共方法,用來(lái)遍歷類中所有屬性,然后在類的外部,訪問(wèn)這個(gè)方法,就可以獲取到對(duì)象的全部屬性了,包括私有的和受保護(hù)的屬性。
我們將代碼修改一下:
class Demo
{
public $name;
public $age;
public $salary;
private $sex; //私有屬性$sex
protected $isMarried; //受保護(hù)屬性$isMarried
public static $home;
public function __construct($name,$age,$salary,$sex,$isMarried)
{
$this->name = $name;
$this->age = $age;
$this->salary = $salary;
$this->sex = $sex;
$this->isMarried = $isMarried;
}
public function query()
{
//遍歷類中非靜態(tài)屬性,$this與當(dāng)前對(duì)象綁定
foreach ($this as $key=>$value){
print $key.'=>'.$value.'
';
}
}
}
//訪問(wèn)
$obj = new Demo('peter', 28, 3800,'male',true);
foreach ($obj as $key=>$value)
{
echo $key.'=>'.$value.'
';
}
echo '
';
$obj->query();
訪問(wèn)結(jié)果如下:
name=>peter
age=>28
salary=>3800
——————————————
name=>peter
age=>28
salary=>3800
sex=>male
isMarried=>1
其實(shí)以上的屬性都是屬于對(duì)象的,是非靜態(tài)屬性,還有一種屬性叫:靜態(tài)屬性,比較特殊,它不屬性對(duì)象,只屬性類,所以不可以遍歷靜態(tài)屬性。只能逐個(gè)輸出。
例如,我們?cè)陬惖膬?nèi)部,再聲明一個(gè)靜態(tài)屬性
public static $home; //聲明靜態(tài)屬性$home
然后修改一個(gè)構(gòu)造方法,增加一個(gè)參數(shù):$home,并在方法體中增加一條賦值語(yǔ)句:
self::$home = $home;
最后在類的外部,實(shí)例化這個(gè)類時(shí),傳入$home的實(shí)參:合肥
$obj = new Demo('peter', 28, 3800,'male',true,'合肥');
在類的外部,我們用類名訪問(wèn)靜態(tài)屬性:
echo Demo::$home;
在類的內(nèi)部,我們?cè)趒uery()方法中,最后添加一條輸出語(yǔ)句:
print self::$home;
完整代碼如下:
public function query()
{
//遍歷類中非靜態(tài)屬性,$this與當(dāng)前對(duì)象綁定
foreach ($this as $key=>$value){
print $key.'=>'.$value.'
';
}
print self::$home; //訪問(wèn)靜態(tài)屬性,self與當(dāng)前類綁定
}
再次訪問(wèn),輸出如下:
name=>peter
age=>28
salary=>3800
合肥
name=>peter
age=>28
salary=>3800
sex=>male
isMarried=>1
合肥
根據(jù)官方手冊(cè),除了可以上面常規(guī)的方法,來(lái)遍歷數(shù)組外,還可以使用迭代器接口(IteratorAggregate)和數(shù)組訪問(wèn)接口(ArrayAccess)來(lái)實(shí)現(xiàn)對(duì)象遍歷,感興趣的同學(xué),可以嘗試一下。
winform練習(xí)-通過(guò)遍歷Control容器中的對(duì)象統(tǒng)一委托事件-樓盤(pán)選擇器
1.窗體布局如下,一個(gè)label標(biāo)簽內(nèi)容如下,一個(gè)btnSave按鈕,用于保存,其他九個(gè)按鈕用于選擇樓盤(pán). 2. 按鈕存于Control容器中,編寫(xiě)方法遍歷容器中的button,通過(guò)條件過(guò)濾掉不是bu ...
iOS開(kāi)發(fā)實(shí)用技巧—Objective-C中的各種遍歷(迭代)方式
iOS開(kāi)發(fā)實(shí)用技巧—Objective-C中的各種遍歷(迭代)方式 說(shuō)明: 1)該文簡(jiǎn)短介紹在iOS開(kāi)發(fā)中遍歷字典.數(shù)組和集合的幾種常見(jiàn)方式. 2)該文對(duì)應(yīng)的代碼可以在下面的地址獲得:https:// ...
jquery獲取json對(duì)象中的key小技巧
jquery獲取json對(duì)象中的key小技巧 比如有一個(gè)json var json = {"name" : "Tom", "age" : 1 ...
Java循環(huán)遍歷中直接修改遍歷對(duì)象
Java 循環(huán)遍歷中直接修改遍歷對(duì)象如下,會(huì)報(bào)異常: for (ShopBaseInfo sp: sourceList) { if(sp.getId()==5){ sourceList.remove( ...
YII框架中可以使用foreach遍歷對(duì)象以及可以使用數(shù)組形式直接訪問(wèn)對(duì)象的原因
YII框架中可以使用foreach遍歷對(duì)象以及可以使用數(shù)組形式直接訪問(wèn)對(duì)象的原因在YII框架的使用過(guò)程中,我們可以使用foreach直接遍歷findAll等方法返回的對(duì)象的屬性為什么呢?其實(shí)這與CMo ...
ES6中常用的小技巧,用了事半功倍哦
ES6中常用的小技巧,如果能在實(shí)際項(xiàng)目中能使用到,必定事半功倍: 1. 強(qiáng)制要求參數(shù) ES6提供了默認(rèn)參數(shù)值機(jī)制,允許你為參數(shù)設(shè)置默認(rèn)值,防止在函數(shù)被調(diào)用時(shí)沒(méi)有傳入這些參數(shù). 在下面的例子中,我們寫(xiě)了 ...
避免Java中NullPointerException的Java技巧和最佳實(shí)踐
Java中的NullPointerException是我們最經(jīng)常遇到的異常了,那我們到底應(yīng)該如何在編寫(xiě)代碼是防患于未然呢.下面我們就從幾個(gè)方面來(lái)入手,解決這個(gè)棘手的?問(wèn)題吧.? 值得慶幸的是,通過(guò)應(yīng)用 ...
Unreal Engine 4 中的 UI 優(yōu)化技巧
轉(zhuǎn)自:https://mp.weixin.qq.com/s/bybEHM9tF-jBPxxqXfrPOQ## Unreal Open Day 2017 活動(dòng)上 Epic Games 開(kāi)發(fā)者支持工程師郭 ...
隨機(jī)推薦
深入理解CSS彈性盒模型flex
× 目錄 [1]版本更迭 [2]display [3]基本概念[4]伸縮容器[5]伸縮項(xiàng)目 前面的話 CSS3引入了一種新的布局模型——flex布局.flex是flexible box的縮寫(xiě),一般稱之 ...
正確認(rèn)識(shí)Android的內(nèi)存管理機(jī)制,合理關(guān)閉進(jìn)程 (一)
隨著大家收貨后會(huì)有很多樂(lè)粉曬內(nèi)存,為啦方便大家,在網(wǎng)上搜集了一些相關(guān)Andriod管理的相關(guān)機(jī)制合理管理內(nèi)存,整理下發(fā)個(gè)貼. 首先要知道Android系統(tǒng)是基于Linux 2.6內(nèi)核開(kāi)發(fā)的開(kāi)源操作系統(tǒng) ...
[Linux] 關(guān)閉防火墻以及開(kāi)放端口
一. service iptables stop 臨時(shí)關(guān)閉, chkconfig iptables off完全關(guān)閉 service iptables status狀態(tài), service iptable ...
string的基本用法
#include #include #include #include us ...
關(guān)于QQ的NABCD模型
關(guān)于QQ的NABCD模型 N--Need 隨著電腦的普及,人們?cè)诰W(wǎng)絡(luò)上進(jìn)行交流的時(shí)間越來(lái)越多,由于現(xiàn)有的交流工具還不是那么的完善,還不能夠完全滿足人們?cè)诮涣鲿r(shí)的需求.因此為了滿足人們更多的需求,我們?cè)O(shè) ...
【Java基礎(chǔ)】反射和注解
前言 在Java中,反射機(jī)制和注解機(jī)制一直是一個(gè)很重要的概念,那么他們其中的原理是怎么樣呢,我們不僅僅需要會(huì)使用,更要知其然而之所以然. 目錄 反射機(jī)制 反射如何使用 注解定義 注解機(jī)制原理 注解如何 ...
hdu-3308 LCIS (線段樹(shù)區(qū)間合并)
LCIS Time Limit: 6000/2000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
(1-3)line-height與圖片的表現(xiàn)
(1-3)line-height與圖片的表現(xiàn) 這篇文章真的很重要,耐心看,重中之重. 一.行高和圖片的表現(xiàn) 圖片和行高有什么歪膩呢?? 很多人不明白,為什么我圖片好好的放在一個(gè)標(biāo)簽里面它就出現(xiàn)了如下問(wèn) ...
android studio中如何替換gradle以防下載卡住
我們?cè)陂_(kāi)發(fā)過(guò)程中需要導(dǎo)入別人的demo工程,那么你有事就會(huì)下載gradle構(gòu)建文件,然而有時(shí)下載會(huì)一直卡住,那么這時(shí)候你就會(huì)想,我自己用迅雷去下載gradle文件然后不就行了,然后問(wèn)題就來(lái)了 1.我們 ...
【原】Python學(xué)習(xí)_Django搭建環(huán)境及創(chuàng)建第一個(gè)項(xiàng)目
1.Window 平臺(tái)安裝 Python 下載安裝包? ??https://www.python.org/downloads/windows/ 2.Pyhton環(huán)境變量配置 右鍵點(diǎn)擊"計(jì)算機(jī) ...
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的php中对象的遍历输出,PHP中的对象遍历技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 罗永浩又欠15亿,“真还传”迎来续集
- 下一篇: php js 验证码,js实现验证码的方