先思考一個問題:
如下代碼會向頁面顯示什么?
代碼如下:
<?php
die(123);
?>
曾經(jīng)有段時間我一直認為頁面會顯示123,但實踐結(jié)果告訴我,答案錯了,頁面一片空白!
一直不知道為什么,死活不輸出123,為了讓頁面輸出123,我把它修改為如下代碼:
代碼如下:
<?php
echo'123';
die();
?>
網(wǎng)絡(luò)上的一段資料:
PHP中exit()與die()的區(qū)別
PHP手冊:die()Equivalenttoexit()。
說明:die()和exit()都是中止腳本執(zhí)行函數(shù);其實exit和die這兩個名字指向的是同一個函數(shù),die()是exit()函數(shù)的別名。該函數(shù)只接受一個參數(shù),可以是一個程序返回的數(shù)值或是一個字符串,也可以不輸入?yún)?shù),結(jié)果沒有返回值。
參考:雖然兩者相同,但通常使用中也有細微的選擇性。例如:
當傳遞給exit和die函數(shù)的值為0時,意味著提前終止腳本的執(zhí)行,通常用exit()這個名字。
代碼如下:
echo"1111";
exit(0);
echo"2222";
//22222不會被輸出,因為程序運行到exit(0)時,腳本已經(jīng)被提前終止,“馬上斷氣”。
當程序出錯時,可以給它傳遞一個字符串,它會原樣輸出在系統(tǒng)終端上,通常使用die()這個名字。
代碼如下:
$fp=fopen("./readme.txt","r")ordie("不能打開該文件");
2//這種情況下,如果fopen函數(shù)被調(diào)用返回布爾值false時,die()將立即終止腳本,并馬上打印
3//傳遞給它的字符串,“死前還能說一兩句話”。
--------------------------------------------------------------------------------
回到前面這個話題,下面代碼為什么不輸出123到頁面?
代碼如下:
<?php
die(123);
//或exit(123);
?>
自己總結(jié):
1、功能上,die()就等同于exit();
2、PHP有多種運行方式,即可網(wǎng)站形式,也可腳本形式(不需要Web服務(wù)器)。
當PHP為腳本形式運行時,建議用exit():
比如說BashShell腳本語言,當它要停止運行時,會用exit()函數(shù)終止腳本,并允許輸出點內(nèi)容到運行環(huán)境(一般是存儲到一個全局變量中),但輸出的內(nèi)容只能是數(shù)字,表示“命令的結(jié)束狀態(tài)”。
也就是說,exit(123)只是輸出一種運行狀態(tài)123,而不是真的要向控制臺輸出123。如果要向控制臺輸出123,代碼得改成如下形式:
代碼如下:
<?php
exit('123');
?>
當PHP為網(wǎng)站形式運行時,建議用die():
但此時die(數(shù)字),就沒啥意義,因為它不會向頁面輸出數(shù)字字符串,也就是說,如果想讓頁面終止并且輸出數(shù)字的話,得改成如下形式
代碼如下:
<?php
die('123');
?>
更多信息請查看IT技術(shù)專欄