詳解PHP變量傳值賦值和引用賦值變量銷毀
本文實例為大家分享了PHP變量傳值賦值和引用賦值變量銷毀的具體代碼,供大家參考,具體內(nèi)容如下
<?php $a = 100; $b = 200; var_dump($a,$b); //int(100) int(200) ?>
php中,上面的代碼,變量是怎么存放的呢?
上面的代碼變動下,將變量b賦值給變量a,會發(fā)生什么?
<?php $a = 100; $b = 200; $a = $b;/*多了這個*/ var_dump($a,$b); //int(200) int(200) ?>
問題來了,$a = $b,那么是將變量a的指針指向了變量b指針所指向的位置?還是變量a指向的位置的值變了?
引用賦值和上面?zhèn)髦蒂x值不同,引用賦值是兩個變量指向一個地方,一旦這樣,一改俱改。
怎么引用賦值呢?變量名前加&即可,
$a = &$b;
這樣賦予變量a的就不僅僅是變量b的值,而是變量b的地址,變量a和變量b共同指向一個地址。
<?php $a = 100; $b = 200; $a = &$b; var_dump($a,$b); //int(200) int(200) /*變量b引用賦值給變量a后,ab指向同一個地址,將會一改俱改,如下:*/ $a =500; var_dump($a,$b);//int(500) int(500) 一改俱改 $b = 700; var_dump($a,$b);//int(700) int(700) 一改俱改 ?>
<?php /*理解下面的話*/ $a = 100; //變量a賦值int 100 ,100是基礎(chǔ)數(shù)據(jù)類型,不是變量,是存在變量指向位置的 $a = $b; //變量b的值 賦值 給變量a,變量a,b各有各的指向,執(zhí)行之后,各是各的。 $a = &$b; //變量b的值的地址 賦值給變量 a ,變量a,b共用一個地址哦!一改俱改! ?>
<?php /* php中unset()是用來銷毀變量的,但很多時候,unset()只把變量給銷毀了, 內(nèi)存中存放的該變量的值仍然沒有銷毀,也就是沒能達到我們想要的釋放內(nèi)存的效果。 這里可以用 變量=null 的方法來釋放其內(nèi)存 unset也會釋放內(nèi)存的情況 1. 在變量值所占空間超過255字節(jié)長的時候,unset(變量)才會釋放內(nèi)存 2. 只有當指向該值的所有變量都被銷毀后,地址才會被釋放(比如$a,$b都指向該值,僅僅unset($a);是不釋放的,$b還是正常存在的)(也要執(zhí)行1的判斷) */ $a = 200; $b = &$a; unset($a); var_dump($a,$b); //NULL int(100) ?>
上面的代碼,執(zhí)行到unset($a)時候,就是將變量a的指向斷開,同時將變量a扔出花名冊,從下圖可以看出,對變量b是沒有影響的。
但是,如果用$a = null;這種方式銷毀變量時,將會有如下影響:
<?php $a = 100; $b = &$a; $a = null; var_dump($a,$b); //NULL NULL ?>
這種方式,釋放了內(nèi)存,但是共用一個地址的另一個變量也受到了影響。
看看這兩種方式在數(shù)組上的應(yīng)用:
<?php $aaa = array( 'a'=>1, 'b'=>2 ); unset($aaa['a']); print_r($aaa); //Array ( [b] => 2 ) ,用unset,數(shù)組中這一項不存在了 $bbb = array( 'a'=>1, 'b'=>2 ); $bbb['a'] = null; print_r($bbb); //Array ( [a] => [b] => 2 ) ,用 = null,數(shù)組中這一項還存在,只是為空了 ?>
以上所述是小編給大家介紹的PHP變量傳值賦值和引用賦值變量銷毀詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
兩級聯(lián)動select刷新后其值保持不變的實現(xiàn)方法
兩級聯(lián)動select刷新后,select值保持不變即點擊提交按鈕后,頁面select中繼續(xù)維持提交前的值,下面有個不錯的示例,大家可以參考下2014-01-01highchart數(shù)據(jù)源縱軸json內(nèi)的值必須是int(詳解)
下面小編就為大家?guī)硪黄猦ighchart數(shù)據(jù)源縱軸json內(nèi)的值必須是int(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02PHP基于迭代實現(xiàn)文件夾復制、刪除、查看大小等操作的方法
這篇文章主要介紹了PHP基于迭代實現(xiàn)文件夾復制、刪除、查看大小等操作的方法,簡單說明了迭代的原理并結(jié)合實例形式分析了php采用迭代算法實現(xiàn)文件夾的復制、刪除及查看大小等常見操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-08-08php源碼加密 仿微盾PHP加密專家(PHPCodeLock)
php源碼加密 仿照 微盾PHP加密專家(PHPCodeLock),需要的朋友可以參考下。2010-05-05如何給phpcms v9增加類似于phpcms 2008中的關(guān)鍵詞表
本篇文章是對給phpcms v9增加類似于phpcms 2008中的關(guān)鍵詞表的方法進行了詳細的分析介紹,需要的朋友參考下2013-07-07