php中的die()和exit()區別
阿新 • • 發佈:2019-02-05
先思考一個問題:
如下程式碼會向頁面顯示什麼?
1 |
<?php |
2 |
die (123); |
3 |
?> |
曾經有段時間我一直認為 頁面會顯示 123,但實踐結果告訴我,答案錯了,頁面一片空白!
一直不知道為什麼,死活不輸出123,為了讓頁面輸出123,我把它修改為如下程式碼:
1 |
<?php |
2 |
echo '123' ; |
3 |
die (); |
4 |
?> |
網上的一段資料:
PHP中exit()與die()的區別
PHP手冊:die()Equivalent to exit()。
說明:die()和exit()都是中止指令碼執行函式;其實exit和die這兩個名字指向的是同一個函式,die()是exit()函式的別名。該函式只接受一個引數,可以是一個程式返回的數值
參考:雖然兩者相同,但通常使用中也有細微的選擇性。例如:
當傳遞給exit和die函式的值為0時,意味著提前終止指令碼的執行,通常用exit()這個名字。
1 |
echo "1111" ; |
2 |
exit (0); |
3 |
echo "2222" ;
// 22222不會被輸出,因為程式執行到exit(0)時,指令碼已經被提前終止,“馬上斷氣”。 |
當程式出錯時,可以給它傳遞一個字串,它會原樣輸出在系統終端上,通常使用die()這個名字。
1 |
$fp = fopen ( "./readme.txt" , "r" )
or die ( "不能開啟該檔案" ); |
2 |
// 這種情況下,如果fopen函式被呼叫返回布林值false時,die()將立即終止指令碼,並馬上列印 |
3 |
// 傳遞給它的字串,“死前還能說一兩句話”。 |
回到前面這個話題,下面程式碼為什麼不輸出 123 到頁面?
1 |
<?php |
2 |
die (123); |
3 |
// 或 exit(123); |
4 |
?> |
自己總結:
1、功能上,die() 就等同於 exit();
2、PHP有多種執行方式,即可網站形式,也可指令碼形式(不需要Web伺服器)。
- 當PHP為指令碼形式執行時,建議用exit():
比如說 Bash Shell指令碼語言,當它要停止執行時,會用 exit()函式終止指令碼,並允許輸出點內容到執行環境
也就是說,exit(123)只是輸出一種執行狀態123,而不是真的要向控制檯輸出字串 123。如果要向控制檯輸出123,程式碼得改成如下形式:
1 |
<?php |
2 |
exit ( '123' ); |
3 |
?> |
- 當PHP為網站形式執行時,建議用die():
但此時 die(數字),就沒啥意義,因為它不會向頁面輸出 數字 字串,也就是說,如果想讓頁面終止並且輸出數字的話,得改成如下形式
1 |
<?php |
2 |
die ( '123' ); |
3 |
?> |