php 變數有關問題

來源:互聯網
上載者:User
php 變數問題
$b='aaa';
$a=&$b;
$b='ddd';
unset($b);
echo $a;


此時輸出 ddd;
疑問:$a=&$b; 這句是把變數b的記憶體位址賦值給$a;改變b的值a的值也會變化

unset($b)銷毀了變數b;echo $a 為什麼還能輸出值呢?

------解決方案--------------------
$b='ddd' 已經把$b的記憶體位址改變了。
------解決方案--------------------
你先$a=&$b、實際上是將$a隱射向$b的地址,你unset($b)後只是把$b與之值的映射關係取消,並不會影響到$a

不知道是不是描述清楚了。。。寒,,好久不做php好久不上來灌水,表達能力都變差了
------解決方案--------------------
PHP code
//從C角度來說,$a這個變數的結構體內含有一個指向$b變數的指標,即$a儲存了$b變數的地址,//unset($b)後,php引擎並沒有將此地址的內容真正釋放,變數的釋放時機應該是由引擎的記憶體回收機制決定的$b = 'aaa';$a = &$b;$c = &$b;//此處多加了一次引用,可能php引擎也考慮到了這一點,所以並不即時釋放該變數//當記憶體片段過多時,才會進行回收處理及再利用,避免重複申請小塊記憶體,降低效率$b = 'ccc';unset($b);$c = 'ddd';unset($c);echo '$a  '.$a;//輸出ddd//以上僅為推測,僅供參考
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.