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

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

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

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

到此這篇關于php的對象傳值與引用傳值代碼實例講解的文章就介紹到這了,更多相關php的對象傳值與引用傳值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
PHP實現(xiàn)Redis單據(jù)鎖以及防止并發(fā)重復寫入
本篇文章給大家分享了PHP實現(xiàn)Redis單據(jù)鎖以及如何防止并發(fā)重復寫入的方法,對此有需要的朋友參考學習下。2018-04-04
PHP用mb_string函數(shù)庫處理與windows相關中文字符及Win環(huán)境下開啟PHP Mb_String方法
昨天想批處理以前下載的一堆文件,把文件里的關鍵內容用正則匹配出來,集中處理。在操作文件時遇到一個問題,就是windows操作系統(tǒng)中的編碼問題.2015-11-11
php打亂數(shù)組二維數(shù)組多維數(shù)組的簡單實例
下面小編就為大家?guī)硪黄猵hp打亂數(shù)組二維數(shù)組多維數(shù)組的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
使用Yii2實現(xiàn)主從數(shù)據(jù)庫設置
大家應該都知道,當項目做大了,數(shù)據(jù)庫主從還是不可少的。使用Yii框架開發(fā),如何設置數(shù)據(jù)庫的主從呢?其實很簡單。下面這篇文章就給大家詳細介紹了使用Yii2實現(xiàn)主從數(shù)據(jù)庫設置的方法,文中介紹的很詳細,相信對大家的理解和學習很有幫助,下面來一起學習學習吧。2016-11-11
laravel 數(shù)據(jù)遷移與 Eloquent ORM的實現(xiàn)方法
laravel 提供了很實用的 Eloquent ORM 模型類,簡單、直觀的與數(shù)據(jù)庫進行交互。同時使用數(shù)據(jù)遷移管理數(shù)據(jù)庫,可以與團隊進行共享以及編輯,本文詳細的介紹了laravel 數(shù)據(jù)遷移與 Eloquent ORM的實現(xiàn)方法,感興趣的可以了解一下2019-04-04
Yii實現(xiàn)多數(shù)據(jù)庫主從讀寫分離的方法
這篇文章主要介紹了Yii實現(xiàn)多數(shù)據(jù)庫主從讀寫分離的方法,通過針對Yii數(shù)據(jù)庫類的擴展實現(xiàn)多數(shù)據(jù)庫主從讀寫的分離功能,是非常實用的技巧,需要的朋友可以參考下2014-12-12

