php 地址引用

來源:互聯網
上載者:User
php的地址引用與C語言中的指標是有差別的.C語言中的指標裡面儲存的是變數的內容在記憶體中存放的地址 。
廢話少說,先看例子,

$a = " ABC " ;
$b =& $a ;
echo $a ; // 這裡輸出:ABC
echo $b ; // 這裡輸出:ABC
$b = " EFG " ;
echo $a ; // 這裡$a的值變為EFG 所以輸出EFG
echo $b ; // 這裡輸出EFG
?>

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

$a = " ABC " ;
$b =& $a ;
unset ( $a );
echo $b ; // 這裡輸出:ABC
?>

原來是這個樣子的,當你 unset 一個引用,只是斷開了變數名和變數內容之間的綁定。這並不意味著變數內容被銷毀了。

//下面再來個小插曲
php中對於地址的指向(類似指標)功能不是由使用者自己來實現的,是由Zend核心實現的,php中引用採用的是“寫時拷貝”的原理,就是除非發生寫操作,指向同一個地址的變數或者對象是不會被拷貝的。
通俗的講,如果有下面的代碼

$a = " ABC " ;
$b = $a ;
?>

其實此時 $a與$b都是指向同一記憶體位址 而並不是$a與$b佔用不同的記憶體
2:如果在上面的代碼基礎上再加上如下代碼

$a = " EFG " ;

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.