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