在之前的文章《PHP函數(shù)運(yùn)用之怎么進(jìn)行進(jìn)制的轉(zhuǎn)換》中,我們了解使用PHP如何進(jìn)行二進(jìn)制數(shù)和十進(jìn)制數(shù)的相互轉(zhuǎn)換、十進(jìn)制數(shù)和十六進(jìn)制數(shù)的相互轉(zhuǎn)換、十進(jìn)制數(shù)和八進(jìn)制數(shù)的相互轉(zhuǎn)換,感興趣的朋友可以學(xué)習(xí)了解一下~
本文的重點(diǎn)是“終止腳本的運(yùn)行,退出當(dāng)前程序”;我們需要通過(guò)一條語(yǔ)句告訴PHP引擎,此語(yǔ)句之后的其他語(yǔ)句不需要執(zhí)行了。
那么怎么才能實(shí)現(xiàn)終止腳本執(zhí)行操作呢?其實(shí),PHP中提供了兩個(gè)內(nèi)置函數(shù)“die()
”和“exit()
”就能完成這個(gè)操作!
我們來(lái)看看下面兩個(gè)例子
<?php $a = 1; $b = 9; echo $a; // 輸出 1 die(); // 終止腳本運(yùn)行,下面不在運(yùn)行 $sum = $a + $b; echo $sum; // 不被輸出 ?>
輸出結(jié)果:
<?php $a = 1; $b = 9; echo $a; // 輸出 1 exit(); // 終止腳本運(yùn)行,下面不在運(yùn)行 $sum = $a + $b; echo $sum; // 不被輸出 ?>
輸出結(jié)果:
可以看出,兩個(gè)程序都在第 5 行退出(終止執(zhí)行)了,并沒有執(zhí)行第 6 行和第 7 行的代碼。
其實(shí) exit 和 die 這兩個(gè)名字指向的是同一個(gè)函數(shù),die() 是 exit() 函數(shù)的別名,兩個(gè)函數(shù)本質(zhì)上是一樣的。且die()和exit() 函數(shù)還接受一個(gè)可選參數(shù) $message
,用于在退出當(dāng)前腳本時(shí)輸出一個(gè)消息。
exit($message); die($message);
$message可以是一個(gè)具體的數(shù)值(int 類型),也可以是一個(gè)字符串(String類型),還可以不輸入任何參數(shù)。
-
如果為 int 類型,那么該值會(huì)作為退出狀態(tài)碼,并且不會(huì)被打印輸出。(退出狀態(tài)碼的取值范圍在 0 至 254 之間。)
<?php $a = 1; $b = 9; echo $a; // 輸出 1 exit(0); // 終止腳本運(yùn)行,下面不在運(yùn)行 $sum = $a + $b; echo $sum; // 不被輸出 ?>
注意:不要使用被 PHP 保留的退出狀態(tài)碼 255。 狀態(tài)碼 0 用于成功中止程序。
-
如果為String類型,則函數(shù)會(huì)打印該字符串并退出當(dāng)前腳本;
<?php header("content-type:text/html;charset=utf-8"); $a = 1; $b = 9; echo $a; // 輸出 1 exit("<br>退出腳本"); // 終止腳本運(yùn)行,下面不在運(yùn)行 $sum = $a + $b; echo $sum; // 不被輸出 ?>
利用這個(gè)特性,當(dāng)程序出錯(cuò)時(shí),我們可以給它傳遞一個(gè)字符串,它會(huì)原樣輸出在系統(tǒng)終端上
$fp=fopen("./readme.txt","r") or die("不能打開該文件"); //這種情況下,如果fopen函數(shù)被調(diào)用返回布爾值false時(shí),die()將立即終止腳本,并馬上打印 //傳遞給它的字符串,“死前還能說(shuō)一兩句話”。
說(shuō)明:雖然die()和exit()兩者相同,但通常使用中也有細(xì)微的選擇性。例如:
當(dāng)傳遞給exit和die函數(shù)的值為0時(shí),意味著提前終止腳本的執(zhí)行,通常用exit()這個(gè)名字。
當(dāng)程序出錯(cuò)時(shí),可以給它傳遞一個(gè)字符串,它會(huì)原樣輸出在系統(tǒng)終端上,通常使用die()這個(gè)名字。
die()和exit() 函數(shù)可以用于循環(huán)語(yǔ)句,能起到跳出循環(huán)的作用
<?php for ($i=0; $i < 10; $i++) { if ($i == 2) { die; } else { echo '$i = '.$i.'<br>'; } } echo '循環(huán)外的一個(gè)輸出<br>'; ?>
輸出結(jié)果:
終止程序的運(yùn)行除了可以使用die()和exit()函數(shù)外,還可以利用return
語(yǔ)句來(lái)實(shí)現(xiàn)。
首先我們要知道:return是語(yǔ)言結(jié)構(gòu)而不是函數(shù)。
return:表示執(zhí)行到該處退出;如果是在函數(shù)中,表示退出函數(shù),如果是在腳本中,表示腳本停止執(zhí)行。
-
如果在全局范圍中調(diào)用,則當(dāng)前腳本文件中止運(yùn)行。如果當(dāng)前腳本文件是被 include 的或者 require 的,則控制交回調(diào)用文件。此外,如果當(dāng)前腳本是被 include 的,則 return 的值會(huì)被當(dāng)作 include 調(diào)用的返回值,相應(yīng)的在主腳本文件中定義一個(gè)變量進(jìn)行返回值的接收。
<?php //包含demo13_ stop. php $test = include ' demo13_ stop.php' ; var_ dump($test) ; ?>
demo13_stop.php
<?php //終止腳本執(zhí)行 echo 'start'; //return return '*'; ?>
-
如果在主腳本文件中調(diào)用 return,則腳本中止運(yùn)行。
總結(jié):
PHP提供的終止腳本執(zhí)行的方式有三種:return,die(),exit()
return一般用于結(jié)束當(dāng)前的函數(shù)/文件/腳本/其他的執(zhí)行,并將信息返回給調(diào)用他的其他 函數(shù)/文件/腳本/其他 。
die()和exit()是使當(dāng)前執(zhí)行停止到這里,并且不再進(jìn)行下去。如果有參數(shù),會(huì)直接打印出來(lái)(只針對(duì)字符串)。
那么如果剛好需要輸出的是一個(gè)數(shù)值變量,則可使用"{}"
來(lái)包裹數(shù)值變量:
<?php $a = 1; $b = 9; exit("{$a}"); // 終止腳本運(yùn)行,下面不在運(yùn)行 $sum = $a + $b; echo $sum; // 不被輸出 ?>
輸出結(jié)果為:
1
好了就說(shuō)到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦。→ →php視頻教程