關於變數賦值?

來源:互聯網
上載者:User
請問像一個變數賦值

$foo=25;

如果執行了這一句話,是不是在記憶體中同時開闢兩個儲存空間啊 一個是儲存值25,另一個$foo裡面存的是值25的地址。

下面我這樣的理解是對的嗎?



不然,如果是開闢一個空間那unset的時候值25應該被釋放了啊:
$foo=25;
$boo=&$foo;
unset($boo);
echo $foo; //輸出25



回複討論(解決方案)

哥們,PHP5.4之後的引用部分改變了

$foo=25;$boo=$foo;unset($boo);echo $foo; //輸出25func(&$var); function func(&$var){ //對$var的一系列運算處理 }但到了php5.4以後的版本,對數組和對象的引用傳遞發生了變化,是這樣的:func($var); //注意這裡,調用函數的時候已經沒有了&,但定義的時候還有function func(&$var){//對$var的一系列運算處理}

這就好比你在案頭建立了一個捷徑,你把捷徑刪了,但是東西還在原來的位置。

等待大鳥。。。

如果你在使用unset();對其引用的變數的參考關聯性還在,那麼這塊記憶體暫時還不會被釋放,只有當所有變數對這塊記憶體地區的引用都斷掉後,這塊被釋放的記憶體地區才會被釋放

如果你在使用unset();對其引用的變數的參考關聯性還在,那麼這塊記憶體暫時還不會被釋放,只有當所有變數對這塊記憶體地區的引用都斷掉後,這塊被釋放的記憶體地區才會被釋放

謝謝回複,您好我只是想知道 當PHP解析器遇到$foo=25 在記憶體中的變化情況,可以指點下嗎,謝謝啦

如果是對象
那麼 $foo 儲存的是對象的地址
$boo = $foo 只是copy了一個地址給他

但是 資料 25 只是一個 數值 所以 不會有 25這個對象 地址直接就是 數值

$boo存放的是$foo的地址

本帖最後由 xuzuning 於 2013-11-22 14:03:00 編輯

php 的變數管理可以簡化為維護這樣一張表
  • 聯繫我們

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