『壹』 php銷毀一個變數有兩種方法:一種是___________,一種是____________
php銷毀一個變數有兩種方法:一種是unset(變數),一種是設置變數為空
<?php
$long="big_long_variable_name";
$$long="PHP"; /* 用存放在變數$long里的字元串作為新變數的變數名,等同於$big_long_variable_name="PHP"; */
$short=& $big_long_variable_name; /* 取變數$big_long_variable_name的值賦給變數$short,此時$short的值為"PHP",等同於$short=& $$long; */
print "01 /$short is $short."; /* "/$"是轉義序列,表示輸出一個美元符號$,下同。本語句的作用是輸出:01 $short is PHP. */
print "02 Long is $big_long_variable_name."; /* 輸出:02 Long is PHP. */
?>
<br />
<br />
<?php $big_long_variable_name.=" rocks!"; /* 重新對$big_long_variable_name賦值。重新賦值過程中,由於在$big_long_variable_name的後面添加了.(點號),因而變數$big_long_variable_name此時的值應為原值("PHP")+新值(" rocks!"),即變數$big_long_variable_name當前完整的值為"PHP rocks!"。下同。*/
print "03 /$short is $short"; /* 輸出:03 $short is PHP rocks! */
print "04 Long is $big_long_variable_name"; /* 輸出:04 Long is PHP rocks! */
?>
<br />
<br />
05 $short is PHP rocks!
06 Long is PHP rocks!
<br />
<br />
<?php $short.="Programming $short"; /* 重新對變數$short賦值。由於在$short後面添加了.(點號),因此請參考上例分析$short的值。*/
print "07 /$short is $short"; /* 輸出:07 $short is PHP rocks!Programming PHP rocks! */
print "08 Long is $big_long_variable_name"; /* 由於變數$short被重新賦值為Programming PHP rocks!,因而變數$big_long_variable_name的值也與$short一同被改變為"PHP rocks!Programming PHP rocks!"。本語句輸出:08 Long is PHP rocks!Programming PHP rocks!注意,如果是對具有相同值的一個變數進行銷毀unset( ),則另一個變數不適用於此種情況,即不會隨之被一同銷毀。*/
?>
<br />
<br />
09 $short is Programming PHP rocks!
10 Long is Programming PHP rocks!
<br />
<br />
<?php $big_long_variable_name.="Web Programming $short"; /* 變數$big_long_variable_name被重新賦值,此時它完整的值應為PHP rocks!Programming PHP rocks!Web Programming PHP rocks!Programming PHP rocks!。變數$short的值此時與變數$big_long_variable_name一致。請分別參考第5處、第10處注釋進行分析。*/
print "11 /$short is $short"; /* 輸出:11 PHP rocks!Programming PHP rocks!Web Programming PHP rocks!Programming PHP rocks! */
print "12 Long is $big_long_variable_name";
?>
<br />
<br />
<?php
unset($big_long_variable_name); /* 用unset( )銷毀變數$big_long_variable_name,變數$short不會因此受到任何影響。*/
print "13 /$short is $short"; /* 雖然銷毀了變數$big_long_variable_name,但$short沒有受到影響,它的值仍是最近一次被賦予的PHP rocks!Programming PHP rocks!Web Programming PHP rocks!Programming PHP rocks! */
print "14 Long is $big_long_variable_name."; /* 變數$big_long_variable_name已被銷毀,故而無值。輸出:14 Long is. */
snow;
?>
<br />
<br />
<?php $short="No point TEST1"; /* 重新對變數$short賦值。由於這次沒有在$short後面添加.(點號),因此$short當前的值為"No point TEST1"。*/
print "15 /$short is $short."; /* 輸出:15 $short is No point TEST1. */
$short="No point TEST2 $short"; /* 重新對變數$short賦值。沒在$short的後面添加.(點號),但引用了它自身最近一次的值"No point TEST1"。*/
print "16 /$short is $short."; /* 輸出:16 $short is No point TEST2 No point TEST1. */
『貳』 php 銷毀變數用unset還是null,什麼時候銷毀
推薦用unset。unset是釋放資源,null是賦空,unset 和 null 的效果是一樣的。
php雖然有自動釋放的機制,但最好是及時釋放。像這樣連續幾天不釋放,會越來越大。
釋放的條件:當一個變數達到目的後,就立即釋放。
純粹的字元變數一般沒有釋放的必要;其他的一些變數,比較大的,或者連庫的,應該立即釋放。
『叄』 PHP中session變數的銷毀
1.何為session?
相當於一個客戶端(可以是瀏覽器、app、ftp等其他,而且同一個瀏覽器多開幾個又算是不同的客戶端)對伺服器的一個訪問,這個期間伺服器為此建立一個唯一的標示(session_id
session_name),其實也就是一個數組Array(),Session的開始和結束並不以業務上的輸入用戶名密碼開始,也不以關閉瀏覽器和網頁刷新而結束
2.session變數的銷毀
程序代碼
<?php
session_unset();
session_destroy();
?>
session_unset()
釋放當前在內存中已經創建的所有$_SESSION變數,但不刪除session文件以及不釋放對應的session
id
session_destroy()
刪除當前用戶對應的session文件以及釋放session
id,內存中的$_SESSION變數內容依然保留
【注意】:
刪除session方法:
1、unset
($_SESSION['xxx'])
刪除單個session,unset($_SESSION['xxx'])
用來unregister一個已注冊的session變數。其作用和session_unregister()相同。session_unregister()在PHP5中不再使用,可將之打入冷宮。
unset($_SESSION)
此函數千萬不可使用,它會將全局變數$_SESSION銷毀,而且還沒有可行的辦法將其恢復。用戶也不再可以注冊$_session變數。
2、$_SESSION=array()
刪除多個session
3、session_destroy()結束當前的會話,並清空會話中的所有資源。。該函數不會unset(釋放)和當前session相關的全局變數(globalvariables),也不會刪除客戶端的session
cookie.PHP默認的session是基於cookie的,如果要刪除cookie的話,必須藉助setcookie()函數。
返回值:布爾值。
功能說明:這個函數結束當前的session,此函數沒有參數,且返回值均為true
session_unset()
如果使用了$_session,則該函數不再起作用。由於PHP5必定要使用$_session,所以此函數可以打入冷宮了。
可以得出刪除session的步驟:
①session_start()
②$_SESSION=array()/unset($_session['xxx'])
③session_destroy()
『肆』 PHP中,怎麼才能關閉瀏覽器後自動銷毀session
php的session過期機制是由這三個配置決定:
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
過期時間是針對session文件最新修改時間的,如果最新修改超過了gc_maxlifetime的時間,gc會有1/1000分之一的概率回收(刪掉session文件)
而每次瀏覽器請求,都是cookie中帶了PHPSESSID去伺服器中匹配session的
http請求是無狀態請求,你一次請求後得到了響應,再沒有其他請求的話,基本伺服器跟你瀏覽器沒啥關系了,所以你關閉了瀏覽器,不可能去命令伺服器主動銷毀session
要想實現你要的效果,只能設置cookie的過期時間了,關閉會話後cookie過期(一般不設過期時間,默認是關閉瀏覽器失效),這樣,你再打開,就要重新登錄,不要關心session的過期了,讓gc自己回收把。
『伍』 詳解PHP變數傳值賦值和引用賦值變數銷毀
本文實例為大家分享了PHP變數傳值賦值和引用賦值變數銷毀的具體代碼,供大家參考,具體內容如下
<?php
$a
=
100;
$b
=
200;
var_mp($a,$b);
//int(100)
int(200)
?>
php中,上面的代碼,變數是怎麼存放的呢?
上面的代碼變動下,將變數b賦值給變數a,會發生什麼?
<?php
$a
=
100;
$b
=
200;
$a
=
$b;/*多了這個*/
var_mp($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_mp($a,$b);
//int(200)
int(200)
/*變數b引用賦值給變數a後,ab指向同一個地址,將會一改俱改,如下:*/
$a
=500;
var_mp($a,$b);//int(500)
int(500)
一改俱改
$b
=
700;
var_mp($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_mp($a,$b);
//NULL
int(100)
?>
上面的代碼,執行到unset($a)時候,就是將變數a的指向斷開,同時將變數a扔出花名冊,從下圖可以看出,對變數b是沒有影響的。
但是,如果用$a
=
null;這種方式銷毀變數時,將會有如下影響:
<?php
$a
=
100;
$b
=
&$a;
$a
=
null;
var_mp($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 session 無法傳遞 自動銷毀
你這個屬於兩個站點吧!一個站點游覽器不關不會銷毀的!
『柒』 php 如何銷毀SESSION中的指定值
unset();是刪除變數
如果要刪除$_SESSION['uid']
只需要unset($_SESSION['uid']);
如果要刪除全部$_SESSION
只需要unset($_SESSION);
『捌』 php為什麼要銷毀session
session_unset()
釋放當前在內存中已經創建的所有$_SESSION變數,但不刪除session文件以及不釋放對應的session id
session_destroy()
刪除當前用戶對應的session文件以及釋放session id,內存中的$_SESSION變數內容依然保留
因此,釋放用戶的session所有資源,需要順序執行如下代碼:
<?php
$_SESSION['user'] = 'lowell';
session_unset();
session_destroy();
?>也可以使用unset()銷毀。一般在這幾個語句都需要用戶觸發,比如用點 安全退出後,觸發這幾個銷毀函數。自動銷毀還需要左一個計劃任務,來定時觸發,或者頁面監控觸發,比如設個全局變數,當頁面進來的時候,這個全局變數設置為true,每當退出的時候,檢查這個全局變數是否存在並為true,如果不是就執行銷毀函數。
『玖』 php對象怎樣銷毀啊
我記得看過一篇文章,有人做過測試,當一個變數的值的大小小於某個數值時(具體多大忘記了),使用unset銷毀對象會降低性能。所以當對象大小較大時,建議用unset銷毀,否則不推薦。
『拾』 php怎麼自動銷毀session
session_start(); $_session[username]=null; session_destroy();