PHP中的循環(huán)結構大致有for循環(huán),while循環(huán)瓜客,do{} while 循環(huán)以及foreach循環(huán)幾種适瓦,不管哪種循環(huán)中,在PHP中跳出循環(huán)大致有這么幾種方式:
<?php
$i = 1;
while?(true) {?// 這里看上去這個循環(huán)會一直執(zhí)行
????if?($i==2){// 2跳過不顯示
???????$i++;
???????continue;
????}?else?if($i==5) {// 但到這里$i=5就跳出循循環(huán)了
???????break;
????}?else{
???????echo $i .?'<br>';
????}
????$i++;
}
exit;
echo'這里不輸出';
?>
結果:
1
3
4
continue
continue是用來用在循環(huán)結構中谱仪,控制程序放棄本次循環(huán)continue語句之后的代碼并轉而進行下一次循環(huán)玻熙。continue本身并不跳出循環(huán)結構,只是放棄這一次循環(huán)疯攒。如果在非循環(huán)結構中(例如if語句中嗦随,switch語句中)使用continue,程序將會出錯卸例。
例如在下面的這段PHP代碼片段中:
<?php
for($i = 1;$i <= 100; $i++ ){
if($i % 3 == 0 || $i % 7 == 0){
continue;
}
& #160;?else{
echo”$i \n<br/>”;
}
}
?>
PHP的代碼片段的作用是輸出100以內称杨,既不能被7整除又不能被3整除的那些自然數,循環(huán)中先用if條件語句判斷那些能被整除的數筷转,然后執(zhí)行continue;語句,就直接進入了下個循環(huán)悬而。不會執(zhí)行下面的輸出語句了呜舒。
break
break是被用在上面所提的各種循環(huán)和switch語句中的。他的作用是跳出當前的語法結構笨奠,執(zhí)行下面的語句袭蝗。break語句可以帶一個參數n唤殴,表示跳出循環(huán)的層數,如果要跳出多重循環(huán)的話到腥,可以用n來表示跳出的層數朵逝,如果不帶參數默認是跳出本重循環(huán)。
看下面這個多重循環(huán)嵌套的例子:
1
2
3
4
5
6
7
8
9
for($i = 1;$i <= 10; $i++ ){
????for($j = 1;$j <= 10;$j++){
????????$m = $i * $i + $j * $j;
????????echo”$m \n<br/>”;
????????if($m < 90 || $m > 190) {
????????????break?2;
???????}
????}
}
這里使用了break2跳出了兩重循環(huán)乡范,你可以試驗一眼配名,將2去掉,得到的結果是完全不一樣的晋辆。如果不使用參數渠脉,跳出的只是本次循環(huán),第一層循環(huán)會繼續(xù)執(zhí)行下去瓶佳。
goto
goto實際上只是一個運算符芋膘,和其他語言一樣,PHP中也不鼓勵濫用goto霸饲,濫用goto會導致程序的可讀性嚴重下降为朋。goto的作用是將程序的執(zhí)行從當前位置跳轉到其他任意位置,goto本身并沒有要結束的循環(huán)的作用厚脉,但其跳轉位置的作用使得其可以作為跳出循環(huán)使用习寸。但PHP5.3及以上版本停止了對goto的支持,所以應該盡量避免使用goto器仗。
下面的是一個使用了goto跳出循環(huán)的例子
1
2
3
4
5
6
7
8
for($i = 1000;$i >= 1 ; $i– ){
????if( sqrt($i) <= 29){
????????goto?a;
????}
????echo “$i”;
}
a:
echo”?this?is?the end”;
例子中使用了goto來跳出循環(huán)融涣,這個例子用來檢測1000以內,那些數的平方根大于29精钮。
exit
exit是用來結束程序執(zhí)行的威鹿。可以用在任何地方轨香,本身沒有跳出循環(huán)的含義忽你。exit可以帶一個參數,如果參數是字符串臂容,PHP將會直接把字符串輸出科雳,如果參數是integer整形(范圍是0-254),那個參數將會被作為結束狀態(tài)使用脓杉。
1
2
3
4
5
6
7
8
9
10
11
<?php
????for($i = 1000;$i >= 1 ; $i– ){
????????if( sqrt($i) >= 29){
????????????echo”$i \n<br/>”;
????????}
????????else{
????????????exit;
????????}
????}
????echo”本行將不會被輸出”;
?>
上面這個例子中直接在從循環(huán)里結束了代碼的運行糟秘,這樣會導致后面的代碼都不會被執(zhí)行,如果是在一個php web頁面里面球散,甚至連exit后面的html代碼都不會被輸出尿赚。
return
return語句是用來結束一段代碼,并返回一個參數的×杈唬可以從一個函數里調用悲龟,也可以從一個include()或者require()語句包含的文件里來調用,也可以是在主程序里調用冰寻,如果是在函數里調用程序將會馬上結束運行并返回參數须教,如果是include()或者require()語句包含的文件中被調用,程序執(zhí)行將會馬上返回到調用該文件的程序斩芭,而返回值將作為include()或者require()的返回值轻腺。而如果是在主程序中調用,那么主程序將會馬上停止執(zhí)行
1
2
3
4
5
6
7
8
9
10
11
<?php
????for($i = 1000;$i >= 1 ; $i– ){
????????if( sqrt($i) >= 29){
????????????echo”$i \n<br/>”;
????????}
????????else{
???????????return;
????????}
????}
????echo”本行將不會被輸出”;
?>
這里的例子和上面使用exit的效果是一樣的秒旋。
在循環(huán)結束條件约计,自然跳出
這個當然是最好理解了,當循環(huán)滿足循環(huán)臨界條件時就是自己退出迁筛。
以上是PHP中跳出循環(huán)的幾種方式的簡單總結煤蚌。
?if不是循環(huán)結構,所以不能使用break细卧,continue退出尉桩。如果你非要在if語句中這樣用的話,可以把這個if語句放在一個循環(huán)結構中
1
2
3
4
5
6
7
8
9
10
11
12
13
$i=0;
$s=1;
while($i==0)
{
????????if($s==1)
????????{
????????????????$v=8;
????????????????break;
????????}
????????$v=9;
}
echo $v;