PHP中跳出循環break,continue,return,exit的區別

1. return 語句的作用

? ? ? (1) return 從當前的方法中退出,返回到該調用的方法的語句處,繼續執行。

? ? ? (2) return 返回一個值給調用該方法的語句,返回值的數據類型必須與方法的聲明中的返回值的類型一致。

? ? ? (3) return后面也可以不帶參數,不帶參數就是返回空,其實主要目的就是用于想中斷函數執行,返回調用函數處。

2. ?break 語句的作用

? ? (1)break在循環體內,強行結束循環的執行,也就是結束整個循環過程,不在判斷執行循環的條件是否成立,直接轉向循環語句下面的語句。

? ? (2)當break出現在循環體中的switch語句體內時,其作用只是跳出該switch語句體。

3.? continue 語句的作用

? ? ? 終止本次循環的執行,即跳過當前這次循環中continue語句后尚未執行的語句,接著進行下一次循環條件的判斷。

4.? exit?函數的作用

??????exit 退出所有腳本,是個函數。


//----------------------------------------------------------------------------------------------------------------------------------------------------------

PHP中的循環結構大致有for循環,while循環,do{} while 循環以及foreach循環幾種,不管哪種循環中,在PHP中跳出循環大致有這么幾種方式:

代碼:

復制代碼代碼如下:


$i = 1;

while (true) { // 這里看上去這個循環會一直執行

if ($i==2) {// 2跳過不顯示

$i++;

continue;

} else if ($i==5) {// 但到這里$i=5就跳出循循環了

break;

} else {

echo $i . '
';

}

$i++;

}

exit;

echo '這里不輸出';

?>

結果:

1

3

4

continue

continue 是用來用在循環結構中,控制程序放棄本次循環continue語句之后的代碼并轉而進行下一次循環。continue本身并不跳出循環結構,只是放棄這一次循環。如果在非循環結構中(例如if語句中,switch語句中)使用continue,程序將會出錯。

例如在下面的這段PHP代碼片段中:

復制代碼代碼如下:


for($i = 1;$i <= 100; $i++ ){

if($i % 3 == 0 || $i % 7 == 0){

continue;

}

& #160;? else{

echo”$i \n
”;

}

}

?>

PHP的代碼片段的作用是輸出100以內,既不能被7整除又不能被3整除的那些自然數,循環中先用if條件語句判斷那些能被整除的數,然后執行 continue;語句,就直接進入了下個循環。不會執行下面的輸出語句了。

break

break是被用在上面所提的各種循環和switch語句中的。他的作用是跳出當前的語法結構,執行下面的語句。break語句可以帶一個參數n,表示跳出循環的層數,如果要跳出多重循環的話,可以用n來表示跳出的層數,如果不帶參數默認是跳出本重循環。

看下面這個多重循環嵌套的例子:

復制代碼代碼如下:

for($i = 1;$i <= 10; $i++ ){

for($j = 1;$j <= 10;$j++){

$m = $i * $i + $j * $j;

echo”$m \n
”;

if($m < 90 || $m > 190) {

break 2;

}

}

}

這里使用了break 2跳出了兩重循環,你可以試驗一眼,將2去掉,得到的結果是完全不一樣的。如果不使用參數,跳出的只是本次循環,第一層循環會繼續執行下去。

goto

goto實際上只是一個運算符,和其他語言一樣,PHP中也不鼓勵濫用goto,濫用goto會導致程序的可讀性嚴重下降。goto的作用是將程序的執行從當前位置跳轉到其他任意位置,goto本身并沒有要結束的循環的作用,但其跳轉位置的作用使得其可以作為跳出循環使用。但PHP5.3及以上版本停止了對goto的支持,所以應該盡量避免使用goto。

下面的是一個使用了goto跳出循環的例子

復制代碼代碼如下:

for($i = 1000;$i >= 1 ; $i– ){

if( sqrt($i) <= 29){

goto a;

}

echo “$i”;

}

a:

echo” this is the end”;

例子中使用了goto來跳出循環,這個例子用來檢測1000以內,那些數的平方根大于29。

exit

exit是用來結束程序執行的。可以用在任何地方,本身沒有跳出循環的含義。exit可以帶一個參數,如果參數是字符串,PHP將會直接把字符串輸出,如果參數是integer整形(范圍是0-254),那個參數將會被作為結束狀態使用。

復制代碼代碼如下:


for($i = 1000;$i >= 1 ; $i– ){

if( sqrt($i) >= 29){

echo”$i \n
”;

}

else{

exit;

}

}

echo”本行將不會被輸出”;

?>

上面這個例子中直接在從循環里結束了代碼的運行,這樣會導致后面的代碼都不會被執行,如果是在一個php web 頁面里面,甚至連exit后面的html代碼都不會被輸出。

return

return 語句是用來結束一段代碼,并返回一個參數的。可以從一個函數里調用,也可以從一個include()或者require()語句包含的文件里來調用,也可以是在主程序里調用,如果是在函數里調用程序將會馬上結束運行并返回參數,如果是include()或者require()語句包含的文件中被調用,程序執行將會馬上返回到調用該文件的程序,而返回值將作為include()或者require()的返回值。而如果是在主程序中調用,那么主程序將會馬上停止執行

復制代碼代碼如下:


for($i = 1000;$i >= 1 ; $i– ){

if( sqrt($i) >= 29){

echo”$i \n
”;

}

else{

return;

}

}

echo”本行將不會被輸出”;

?>

這里的例子和上面使用exit的效果是一樣的。

在循環結束條件,自然跳出

這個當然是最好理解了,當循環滿足循環臨界條件時就是自己退出。

以上是PHP中跳出循環的幾種方式的簡單總結。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,237評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,957評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,248評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,356評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,081評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,485評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,720評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,263評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,025評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,204評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,461評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,874評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,105評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,945評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,205評論 2 375

推薦閱讀更多精彩內容

  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,165評論 1 19
  • 1 概述 在腳本的循環中,需要用到break,continue,exit.來控制循環。利用return來獲取函數的...
    ghbsunny閱讀 1,410評論 0 0
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,754評論 0 11
  • 植物死了 把生命留在種子里 詩人離去 把他的生命留在詩句里 流年似水撞擊生繡的門鈴 固執的夢境 任性的少年...
    淘猴侯孫行閱讀 224評論 25 25
  • 喬布斯曾經說過一段話,我一直非常非常喜歡,他是這么說的:“…you can't connect the dots ...
    脫韁的野馬桃閱讀 228評論 0 0