php的對(duì)象傳值與引用傳值代碼實(shí)例講解
變量賦值與對(duì)象賦值對(duì)比
<?php
// 聲明一個(gè)變量并賦值
$a = 1;
// 將數(shù)據(jù)類(lèi)型的值 賦值 給一個(gè)變量
$b = $a;
// 修改$a的值
$a = 2;
// $a和$b是兩個(gè)獨(dú)立的內(nèi)存空間修改其中一個(gè)另一個(gè)不受影響
echo $b; // 1
class Person{
public $name;
public $age;
}
// 將對(duì)象類(lèi)型的數(shù)據(jù) 賦值 給一個(gè)變量
$p = new Person;
// 通過(guò)對(duì)屬性修改值,來(lái)確定面向?qū)ο笾?對(duì)象的傳值方式
$p->name = 'jesse';
// 若是成功修改值,則是引用傳值
echo $p->name; // jesse
?>
案例解釋?zhuān)?/strong>
在這里通過(guò)變量的賦值方式與對(duì)象的賦值方式方式相對(duì)比,代碼中 $b = a ; 的 賦 值 方 式 為 “ 拷 貝 賦 值 ” , 故 在 修 改 其 源 值 ( a; 的賦值方式為“拷貝賦值”,故在修改其源值( a;的賦值方式為“拷貝賦值”,故在修改其源值(a的值)的情況下, b 的 值 不 受 影 響 。 b的值不受影響。 b的值不受影響。a與$b的內(nèi)存關(guān)系圖如下:

而代碼 p − > n a m e = ′ j e s s e ′ ; 將 數(shù) 據(jù) 類(lèi) 型 賦 值 給 p->name = 'jesse';將數(shù)據(jù)類(lèi)型賦值給 p−>name=′jesse′;將數(shù)據(jù)類(lèi)型賦值給p變量,通過(guò)$p修改對(duì)象內(nèi)部的值成功,對(duì)比變量的傳值方式,證明這是引用傳值,內(nèi)存關(guān)系圖如下:

<?php
class Person
{
public $name;
public $age;
// 將對(duì)象類(lèi)型的數(shù)據(jù) 賦值 給一個(gè)變量
$p = new Person;
// 通過(guò)對(duì)屬性修改值,來(lái)確定面向?qū)ο笾?對(duì)象的傳值方式
$p->name = 'jesse';
// 將對(duì)象賦予另一變量
$m = $p;
// 另一變量修改屬性值
$m->name = 'Marry';
// 輸出源變量 賦值變量訪問(wèn)內(nèi)部屬性的結(jié)果
echo $p->name, $m->name;
}
?>
$m = p ; 代 碼 為 本 篇 文 章 的 最 “ 點(diǎn) 睛 ” 的 代 碼 , 等 號(hào) 右 邊 為 是 一 個(gè) 對(duì) 象 , 左 邊 是 一 個(gè) 變 量 , 那 么 犀 利 的 問(wèn) 題 來(lái) 了 , p;代碼為本篇文章的最“點(diǎn)睛”的代碼,等號(hào)右邊為是一個(gè)對(duì)象,左邊是一個(gè)變量,那么犀利的問(wèn)題來(lái)了, p;代碼為本篇文章的最“點(diǎn)睛”的代碼,等號(hào)右邊為是一個(gè)對(duì)象,左邊是一個(gè)變量,那么犀利的問(wèn)題來(lái)了,m是將對(duì)象拷貝一份?還是按引用傳遞呢?該代碼內(nèi)存關(guān)系如下:

所以,最后兩個(gè)對(duì)象的屬性值均被修改為Marry!!!
那按引用傳值會(huì)是怎么個(gè)情況?
<?php
class Person
{
public $name;
public $age;
}
// 將對(duì)象類(lèi)型的數(shù)據(jù) 賦值 給一個(gè)變量
$p = new Person;
// 通過(guò)對(duì)屬性修改值,來(lái)確定面向?qū)ο笾?對(duì)象的傳值方式
$p->name = 'jesse';
// 將對(duì)象賦予另一變量
$m = &$p;
// 另一變量修改屬性值
$m->name = 'Marry';
// 輸出源變量 賦值變量訪問(wèn)內(nèi)部屬性的結(jié)果
echo $p->name, $m->name;
?>

到此這篇關(guān)于php的對(duì)象傳值與引用傳值代碼實(shí)例講解的文章就介紹到這了,更多相關(guān)php的對(duì)象傳值與引用傳值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP實(shí)現(xiàn)Redis單據(jù)鎖以及防止并發(fā)重復(fù)寫(xiě)入
本篇文章給大家分享了PHP實(shí)現(xiàn)Redis單據(jù)鎖以及如何防止并發(fā)重復(fù)寫(xiě)入的方法,對(duì)此有需要的朋友參考學(xué)習(xí)下。2018-04-04
PHP用mb_string函數(shù)庫(kù)處理與windows相關(guān)中文字符及Win環(huán)境下開(kāi)啟PHP Mb_String方法
昨天想批處理以前下載的一堆文件,把文件里的關(guān)鍵內(nèi)容用正則匹配出來(lái),集中處理。在操作文件時(shí)遇到一個(gè)問(wèn)題,就是windows操作系統(tǒng)中的編碼問(wèn)題.2015-11-11
php打亂數(shù)組二維數(shù)組多維數(shù)組的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇php打亂數(shù)組二維數(shù)組多維數(shù)組的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
使用Yii2實(shí)現(xiàn)主從數(shù)據(jù)庫(kù)設(shè)置
大家應(yīng)該都知道,當(dāng)項(xiàng)目做大了,數(shù)據(jù)庫(kù)主從還是不可少的。使用Yii框架開(kāi)發(fā),如何設(shè)置數(shù)據(jù)庫(kù)的主從呢?其實(shí)很簡(jiǎn)單。下面這篇文章就給大家詳細(xì)介紹了使用Yii2實(shí)現(xiàn)主從數(shù)據(jù)庫(kù)設(shè)置的方法,文中介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)很有幫助,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11
最新制作ThinkPHP3.2.3完全開(kāi)發(fā)手冊(cè)
本文給大家分享的是作者花了3個(gè)多小時(shí)制作完成的ThinkPHP3.2.3完全開(kāi)發(fā)手冊(cè),非常的細(xì)致全面,有需要的小伙伴可以參考下2015-11-11
laravel 數(shù)據(jù)遷移與 Eloquent ORM的實(shí)現(xiàn)方法
laravel 提供了很實(shí)用的 Eloquent ORM 模型類(lèi),簡(jiǎn)單、直觀的與數(shù)據(jù)庫(kù)進(jìn)行交互。同時(shí)使用數(shù)據(jù)遷移管理數(shù)據(jù)庫(kù),可以與團(tuán)隊(duì)進(jìn)行共享以及編輯,本文詳細(xì)的介紹了laravel 數(shù)據(jù)遷移與 Eloquent ORM的實(shí)現(xiàn)方法,感興趣的可以了解一下2019-04-04
2014最熱門(mén)的24個(gè)php類(lèi)庫(kù)匯總
本文給大家分享24個(gè)免費(fèi)并且高質(zhì)量的PHP類(lèi)庫(kù),也是2014年比較熱門(mén)流行的類(lèi)庫(kù),這里推薦給大家。2014-12-12
Yii實(shí)現(xiàn)多數(shù)據(jù)庫(kù)主從讀寫(xiě)分離的方法
這篇文章主要介紹了Yii實(shí)現(xiàn)多數(shù)據(jù)庫(kù)主從讀寫(xiě)分離的方法,通過(guò)針對(duì)Yii數(shù)據(jù)庫(kù)類(lèi)的擴(kuò)展實(shí)現(xiàn)多數(shù)據(jù)庫(kù)主從讀寫(xiě)的分離功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
PHP接口類(lèi)(interface)的定義、特點(diǎn)和應(yīng)用示例
這篇文章主要介紹了PHP接口類(lèi)(interface),結(jié)合實(shí)例形式分析了PHP接口類(lèi)(interface)的基本功能、定義、特點(diǎn)、用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05
PHP實(shí)現(xiàn)會(huì)員注冊(cè)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)會(huì)員注冊(cè)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01

