天天看點

位址引用PHP,php 位址引用

php的位址引用與C語言中的指針是有差别的.C語言中的指針裡面存儲的是變量的内容在記憶體中存放的位址 。

廢話少說,先看例子,

php

$a = " ABC " ;

$b =& $a ;

echo $a ; // 這裡輸出:ABC

echo $b ; // 這裡輸出:ABC

$b = " EFG " ;

echo $a ; // 這裡$a的值變為EFG 是以輸出EFG

echo $b ; // 這裡輸出EFG

?>

上面的例子大家都明白,就不再多說了。那麼看看下面的例子呢?

php

$a = " ABC " ;

$b =& $a ;

unset ( $a );

echo $b ; // 這裡輸出:ABC

?>

原來是這個樣子的,當你 unset 一個引用,隻是斷開了變量名和變量内容之間的綁定。這并不意味着變量内容被銷毀了。

//下面再來個小插曲

php中對于位址的指向(類似指針)功能不是由使用者自己來實作的,是由Zend核心實作的,php中引用采用的是“寫時拷貝”的原理,就是除非發生寫操作,指向同一個位址的變量或者對象是不會被拷貝的。

通俗的講,如果有下面的代碼

php

$a = " ABC " ;

$b = $a ;

?>

其實此時 $a與$b都是指向同一記憶體位址 而并不是$a與$b占用不同的記憶體

2:如果在上面的代碼基礎上再加上如下代碼

$a = " EFG " ;

由于$a與$b所指向的記憶體的資料要重新寫一次了,此時Zend核心會自動判斷 自動為$b生産一個$a的資料拷貝,重新申請一塊記憶體進行存儲

本文原創釋出php中文網,轉載請注明出處,感謝您的尊重!