1. 程式人生 > >php中的die()和exit()區別

php中的die()和exit()區別

先思考一個問題:

如下程式碼會向頁面顯示什麼?

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 ?>