本文目錄一覽:
- 1、詳解PHP變量傳值賦值和引用賦值變量銷毀
- 2、php 引用變量與普通變量之間有何區別?如何通過引用傳值?在什麼情況下會這樣做?
- 3、php中傳值與傳引用的區別?
- 4、php數組變量的傳值
- 5、php 傳值跟引用到底是怎麼回事
- 6、請說明php中傳值與傳引用的區別.什麼時候傳值什麼
詳解PHP變量傳值賦值和引用賦值變量銷毀
本文實例為大家分享了PHP變量傳值賦值和引用賦值變量銷毀的具體代碼,供大家參考,具體內容如下
?php
$a
=
100;
$b
=
200;
var_dump($a,$b);
//int(100)
int(200)
?
php中,上面的代碼,變量是怎麼存放的呢?
上面的代碼變動下,將變量b賦值給變量a,會發生什麼?
?php
$a
=
100;
$b
=
200;
$a
=
$b;/*多了這個*/
var_dump($a,$b);
//int(200)
int(200)
?
問題來了,$a
=
$b,那麼是將變量a的指針指向了變量b指針所指向的位置?還是變量a指向的位置的值變了?
引用賦值和上面傳值賦值不同,引用賦值是兩個變量指向一個地方,一旦這樣,一改俱改。
怎麼引用賦值呢?變量名前加即可,
$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是基礎數據類型,不是變量,是存在變量指向位置的
$a
=
$b;
//變量b的值
賦值
給變量a,變量a,b各有各的指向,執行之後,各是各的。
$a
=
$b;
//變量b的值的地址
賦值給變量
a
,變量a,b共用一個地址哦!一改俱改!
?
?php
/*
php中unset()是用來銷毀變量的,但很多時候,unset()只把變量給銷毀了,
內存中存放的該變量的值仍然沒有銷毀,也就是沒能達到我們想要的釋放內存的效果。
這裡可以用
變量=null
的方法來釋放其內存
unset也會釋放內存的情況
1.
在變量值所佔空間超過255位元組長的時候,unset(變量)才會釋放內存
2.
只有當指向該值的所有變量都被銷毀後,地址才會被釋放(比如$a,$b都指向該值,僅僅unset($a);是不釋放的,$b還是正常存在的)(也要執行1的判斷)
*/
$a
=
200;
$b
=
$a;
unset($a);
var_dump($a,$b);
//NULL
int(100)
?
上面的代碼,執行到unset($a)時候,就是將變量a的指向斷開,同時將變量a扔出花名冊,從下圖可以看出,對變量b是沒有影響的。
但是,如果用$a
=
null;這種方式銷毀變量時,將會有如下影響:
?php
$a
=
100;
$b
=
$a;
$a
=
null;
var_dump($a,$b);
//NULL
NULL
?
這種方式,釋放了內存,但是共用一個地址的另一個變量也受到了影響。
看看這兩種方式在數組上的應用:
?php
$aaa
=
array(
‘a’=1,
‘b’=2
);
unset($aaa[‘a’]);
print_r($aaa);
//Array
(
[b]
=
2
)
,用unset,數組中這一項不存在了
$bbb
=
array(
‘a’=1,
‘b’=2
);
$bbb[‘a’]
=
null;
print_r($bbb);
//Array
(
[a]
=
[b]
=
2
)
,用
=
null,數組中這一項還存在,只是為空了
?
以上所述是小編給大家介紹的PHP變量傳值賦值和引用賦值變量銷毀詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
您可能感興趣的文章:PHP生成短網址的思路以及實現方法的詳解PHP錯誤提示It
is
not
safe
to
rely
on
the
system……的解決方法PHP隨機數函數rand()與mt_rand()的講解php微信掃碼支付
php公眾號支付PHP實現支持CURL字符串證書傳輸的方法PHP使用OB緩存實現靜態化功能示例PHP使用mysqli同時執行多條sql查詢語句的實例PHP中命名空間的使用例子PHP
SESSION機制的理解與實例PHP自動載入類文件函數__autoload的使用方法
php 引用變量與普通變量之間有何區別?如何通過引用傳值?在什麼情況下會這樣做?
php 引用變量與普通變量之間的區別是二者之間的賦值分別是引用傳遞和值傳遞。傳zhi播客php視頻教程中有說到過這個問題。值傳遞是每個變量都有自己的空間。而引用傳遞則是多個變量公用一個變量空間。基本數據類型往往是值傳遞,而複合數據類型如數組卻是引用傳遞多。
php中傳值與傳引用的區別?
傳值要重新構造一份原參數的拷貝
傳引用則不需要
傳值對參數的修改不會改變原參數
傳引用時可以直接修改原參數
至於什麼時候傳引用,這看你的需要。
如果你的參數對象比較大(佔用內存很多),而函數本身不需要修改原對象時,這個時候就推薦傳引用,可以省去臨時對象的構造開銷。
如果你有實際修改原參數的需要,那麼就只能傳引用了。
php數組變量的傳值
echo ‘tda href=”lj.php?action=’.$row[0].'”‘.$row[1].”/a/td”; 把這個改成 echo ‘tda href=”lj.php?action=’.$row[x_id].'”‘.$row[x_name].”/a/td”;
php 傳值跟引用到底是怎麼回事
變量存儲數據時可以理解為變量的值放在一個空間里,而變量有一個地址指向那個空間,就如你的$test=”aaaaa”; 變量$test就有一個地址指向存儲了aaaaa的空間,當$abc=$test; 這時就是把$test指向那個空間的地址賦給了$abc,所以當$abc取出的值跟$test是一樣的,都訪問的同樣的一個空間,同樣當改變$abc的值時(如$abc=”bbbbb”)就是直接改變了那個空間里的值,這時你會發現$test的輸出值也跟着改變了,這就是引用;
如果是直接賦值,即$abc=$test;這時就會有一個新空間,存儲的值也是aaaaa,並且$abc的地址指向這個新空間,這時$abc、$test兩個變量的值相同,但他們相互不影響了,改變其中的一個值另外一個不影響,這就是傳值。
你這裡是因為在引用之後才銷毀的變量$test,這時變量$test不存在了,,但存儲值aaaaa的那個空間還存在,並且$abc的地址指向那個空間,所以echo $abc 就輸出aaaaa
希望我的回答能幫到你!
請說明php中傳值與傳引用的區別.什麼時候傳值什麼
傳值,
是把實參的值賦值給行參
那麼對行參的修改,不會影響實參的值
傳引用
真正的以地址的方式傳遞參數
傳遞以後,行參和實參都是同一個對象,只是他們名字不同而已
對行參的修改將影響實參的值
所謂值傳遞,就是說僅將對象的值傳遞給目標對象,就相當於copy;系統將為目標對象重新開闢一個完全相同的內存空間。
所謂引用,就是說將對象在內存中的地址傳遞給目標對象,就相當於使目標對象和原始對象對應同一個內存存儲空間。此時,如果對目標對象進行修改,內存中的數據也會改變。
原創文章,作者:Z0J99,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/130270.html