1<?php
2 //深入理解php物件賦值
3echo '';45
$obj = new
stdclass;
6$obj->name = 'pig';
7var_dump($obj); //
object(stdclass)#1 (1) 89
$copy = $obj; //
$obj ,$copy都是new stdclass返回的同乙個識別符號的拷貝
10var_dump($copy); //
object(stdclass)#1 (1)
1112
$objref = &$obj; //
此時會將$obj轉換成引用,然後賦值給$objref,因此$obj,$objref都為引用
13var_dump($objref); //
object(stdclass)#1 (1)
1415
$objclone = clone
$obj; //
新空間16
$obj->name = 'after clone';
17var_dump($objclone); //
object(stdclass)#1 (1)
18var_dump($obj); //
object(stdclass)#1 (1)
1920
//unset是刪除引用效果
21$nameref = &$obj->name; //
$obj->name被轉換成引用(& string),然後賦給$nameref
22var_dump($obj); //
object(stdclass)#2 (1)
23unset($nameref); //
刪除引用
24var_dump($obj); //
object(stdclass)#1 (1)
2526
//null是賦值效果
27$nameref = &$obj->name; //
恢復name的引用
28var_dump($obj); //
object(stdclass)#2 (1)
29$nameref = null
;
30var_dump($obj); //
object(stdclass)#2 (1)
3132
unset($objref); //
僅僅刪除了引用
33var_dump($obj); //
object(stdclass)#1 (1)
3435
$objref = &$obj; //
恢復物件引用
36$obj->name = 'lucy';
37$obj = null; //
賦值$obj為null,$obj只是new stdclass的標識拷貝,不會影響其內容。
38//$objref做為$obj的引用,會同時被賦值null
39//等價 $objref = null;
4041
var_dump($obj,$copy,$objref,$objclone
);42
//null,
43// object(stdclass)#1 (1) ,
44// null,
45// object(stdclass)#1 (1)
4647 ?>
深入理解php的引用賦值
關於php引用的一般問題大家看資料就行了,這次我們來聊點有趣的東西。今天乙個朋友在群裡面問起來乙個關於變數引用賦值的問題,問題本身很簡單,我突然想做乙個實驗,來看看array直接賦值和引用賦值效能上的差別,寫完 發現另外乙個問題.請看 a array fill 0,1000000,10 functi...
深入理解PHP原理之變數賦值
在前面的文章 深入理解php原理之變數結構 中我已經介紹了php變數的內部結構,下面我將會對變數賦值過程中,php內部對資料處理的原理進行闡述,不過在講述該原理前,需要先了解一下變數名和它的值是如何關聯起來的,這個對變數賦值內部原理的理解非常重要,例如 a 1 這個例子看起來非常簡單,但是你知道 變...
深入理解PHP中賦值與引用
先看下面的問題 a 10 將常量值賦給變數,會為a分配記憶體空間 b a 變數賦值給變數,是不是copy了乙份副本,b也分配了記憶體空間呢?c a 引用是不會為c分配空間的,c和a是共用乙份空間的。對於中間的那個問題,你的答案是什麼呢?在今天之前,我的答案是會為b分配記憶體空間。因為我是這麼理解的 ...