您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17322|回复: 0
打印 上一主题 下一主题

[php学习资料] PHP跳出循环的方法及continue、break、exit的区别

[复制链接]
跳转到指定楼层
楼主
发表于 2019-4-11 11:13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PHP中的循环结构大致有for循环,while循环,do{} while 循环以及foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式:
" L% B$ w8 q% \/ M
  1. <?php. }7 u+ c2 u# q  {0 d% i
  2. ! d4 I) Y5 M3 J  A. K
  3. $i = 1;  Y! G5 p7 v! @0 f, q
  4. while (true) { // 这里看上去这个循环会一直执行
    * K7 B; Q1 ~" `: D; j
  5.     if ($i==2){// 2跳过不显示7 V! ~, t4 X9 s4 L
  6.        $i++;$ v  z1 F& ^7 L/ D( a; j
  7.        continue;
    5 b$ K9 d4 e# a& [! e4 E
  8.     } else if($i==5) {// 但到这里$i=5就跳出循循环了! a/ h: i* H8 b* ~, I' A3 l2 c" m
  9.        break;/ c$ l9 Q0 p( Q. K: |: n
  10.     } else{% _" r4 D0 P) H& x! I8 B/ ~4 f* Z
  11.        echo $i . '<br>';
    & y# D5 a4 n" ?: t9 ^9 k
  12.     }
    8 l! ]( s+ j8 V# m7 \; A% ]
  13.     $i++;
    ; ^- t% n3 ^4 V/ o" O
  14. }' \) n$ j& T& F/ \
  15. exit;' T0 T# A8 g! D1 f# V& \- X( g

  16. 7 m* c" z  g) }4 g, v( Q6 W6 w+ e
  17. echo'这里不输出';
    ( o% a# J5 j/ a! y1 S; d
  18. ?>
    & @! R; i" _8 T4 N( t* V

  19. 2 J! s! E% G% X. Y3 y
  20. 结果:8 H* u# ^- s( e6 I: }* D" O$ o
  21. 1 c* m# J. p# O  u# h
  22. 1
    7 Z5 J6 k; \. v& D: w" W# p" S% [
  23. 3& t3 O# ?: ]4 w! [$ ^
  24. 4
复制代码
continue
+ E1 A8 ^+ W- {* \; q4 {
continue是用来用在循环结构中,控制程序放弃本次循环continue语句之后的代码并转而进行下一次循环。continue本身并不跳出循环结构,只是放弃这一次循环。如果在非循环结构中(例如if语句中,switch语句中)使用continue,程序将会出错。
例如在下面的这段PHP代码片段中:
  1. <?php" _+ a! y) w, i+ \% L
  2. for($i = 1;$i <= 100; $i++ ){
    " j9 N# }( a# b8 D. D, }6 h
  3. if($i % 3 == 0 || $i % 7 == 0){1 W$ H# H% r1 R
  4. continue;: Y( P6 U3 \  O$ [
  5. }
    & U& z2 q: |2 I4 ~+ |1 F6 |
  6. & #160;  else{
    , A; _1 R4 o7 t# d! |# k' y1 x, V# R9 o
  7. echo”$i \n<br/>”;
    / E0 }3 I5 k+ z2 J8 P0 _4 S
  8. }
    " J; J0 z0 H  I( @2 A7 \* \
  9. }
    ; Z9 \; D, L6 |2 d& r2 S* ~1 i# `
  10. ?>
复制代码
PHP的代码片段的作用是输出100以内,既不能被7整除又不能被3整除的那些自然数,循环中先用if条件语句判断那些能被整除的数,然后执行continue;语句,就直接进入了下个循环。不会执行下面的输出语句了。
break
break是被用在上面所提的各种循环和switch语句中的。他的作用是跳出当前的语法结构,执行下面的语句。break语句可以带一个参数n,表示跳出循环的层数,如果要跳出多重循环的话,可以用n来表示跳出的层数,如果不带参数默认是跳出本重循环。
看下面这个多重循环嵌套的例子:
  1. for($i = 1;$i <= 10; $i++ ){& f, d/ v% I( Q" V' ^4 u
  2.     for($j = 1;$j <= 10;$j++){
    5 F* V3 t+ d1 ]8 N! s2 p
  3.         $m = $i * $i + $j * $j;7 @% v5 k: S- h. C! S+ l' I, A# |
  4.         echo”$m \n<br/>”;$ d6 J- {$ p: Q) C
  5.         if($m < 90 || $m > 190) {
    ( U( ^" l# R! Q0 E: {4 L. C
  6.             break 2;
    , U( f7 v+ ~0 K% c) ?
  7.        }5 i/ G' s" e% ]4 a1 j
  8.     }2 L: D& a" ^9 O/ y
  9. }
复制代码
这里使用了break2跳出了两重循环,你可以试验一眼,将2去掉,得到的结果是完全不一样的。如果不使用参数,跳出的只是本次循环,第一层循环会继续执行下去。
goto
goto实际上只是一个运算符,和其他语言一样,PHP中也不鼓励滥用goto,滥用goto会导致程序的可读性严重下降。goto的作用是将程序的执行从当前位置跳转到其他任意位置,goto本身并没有要结束的循环的作用,但其跳转位置的作用使得其可以作为跳出循环使用。但PHP5.3及以上版本停止了对goto的支持,所以应该尽量避免使用goto。
: c) M/ U! {+ b  N. f下面的是一个使用了goto跳出循环的例子
  1. for($i = 1000;$i >= 1 ; $i– ){5 u3 d; R7 O2 J: r( w" y
  2.     if( sqrt($i) <= 29){9 C" S" G0 I2 x+ U
  3.         goto a;
    8 O& a" T6 D' m0 E  K
  4.     }( W# i) h. p, d7 Q3 t: N/ r
  5.     echo “$i”;* U* _) W! M- _8 V% [9 [; g
  6. }( U# i' D0 B1 L$ F: v& R( X% [; m
  7. a:
    1 X5 O# A# B% s
  8. echo” this is the end”;
复制代码
例子中使用了goto来跳出循环,这个例子用来检测1000以内,那些数的平方根大于29。
exit
exit是用来结束程序执行的。可以用在任何地方,本身没有跳出循环的含义。exit可以带一个参数,如果参数是字符串,PHP将会直接把字符串输出,如果参数是integer整形(范围是0-254),那个参数将会被作为结束状态使用。
  1. <?php% s* S6 l9 Z  e( {. O
  2.     for($i = 1000;$i >= 1 ; $i– ){3 U8 g9 y# \6 ~8 H. z& D1 t
  3.         if( sqrt($i) >= 29){/ l9 n& n$ O2 e
  4.             echo”$i \n<br/>”;4 {/ a8 _- i6 u# L' W
  5.         }3 q: B4 P$ |2 T- G
  6.         else{: b0 Y8 o+ z, j" w0 k/ k
  7.             exit;
    1 D' k* W3 k$ g, L
  8.         }' J9 n) r  L# y$ Q% x
  9.     }- n" `8 M/ |9 Z' n) W
  10.     echo”本行将不会被输出”;9 ^" E; E- x: e9 |6 \
  11. ?>
复制代码
上面这个例子中直接在从循环里结束了代码的运行,这样会导致后面的代码都不会被执行,如果是在一个php web页面里面,甚至连exit后面的html代码都不会被输出。
return
return语句是用来结束一段代码,并返回一个参数的。可以从一个函数里调用,也可以从一个include()或者require()语句包含的文件里来调用,也可以是在主程序里调用,如果是在函数里调用程序将会马上结束运行并返回参数,如果是include()或者require()语句包含的文件中被调用,程序执行将会马上返回到调用该文件的程序,而返回值将作为include()或者require()的返回值。而如果是在主程序中调用,那么主程序将会马上停止执行
  1. <?php
    4 Z2 ^- `" F' K0 `7 I  m
  2.     for($i = 1000;$i >= 1 ; $i– ){
    ( q" H! X* b  V1 ]& T
  3.         if( sqrt($i) >= 29){
    0 x6 ?  M7 x% a0 U3 M( c+ f
  4.             echo”$i \n<br/>”;
    $ d9 [' y5 a, ]3 m9 u* |
  5.         }
    . f8 _, @- C2 q5 Q* B5 o" j
  6.         else{
    ! D  U5 W( j: R/ ^$ y( f$ M
  7.            return;
      [! p5 Q4 A, i( a6 r
  8.         }& b: Q8 C7 i8 H3 X7 _
  9.     }
    0 ]2 P9 o6 F% x
  10.     echo”本行将不会被输出”;
    0 k( i8 g$ z- x" A
  11. ?>
复制代码
这里的例子和上面使用exit的效果是一样的。
在循环结束条件,自然跳出
这个当然是最好理解了,当循环满足循环临界条件时就是自己退出。
以上是PHP中跳出循环的几种方式的简单总结。
if不是循环结构,所以不能使用break,continue退出。如果你非要在if语句中这样用的话,可以把这个if语句放在一个循环结构中
  1. $i=0;: B/ ^7 }9 G; h& d- {2 f0 O
  2. $s=1;3 r$ O4 z" W; ?) k
  3. while($i==0)' C1 O5 E; f2 n  q& S
  4. {4 R% B- i9 y0 u1 t
  5.         if($s==1)
    1 r" _) C- I, f& ^- J9 ?+ P
  6.         {4 w' h3 ]1 |9 W* G: @
  7.                 $v=8;6 n6 |9 f# x% k
  8.                 break;8 x) s/ `; e# P& I8 L% B' t* r
  9.         }
    " e0 l+ e2 i% h9 u$ s3 E
  10.         $v=9;
    : U6 u$ Y3 j2 X: C4 `, Y+ b9 W0 \
  11. }
    ( Y* X0 R! z! u# J( _) F' Q
  12. - L$ Q9 N2 }. t9 k
  13. echo $v;
复制代码
) D% c( z! t: W7 V0 Y% O& P

; M: V+ v, U" t6 N5 X% L2 Z- P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:47 , Processed in 0.060872 second(s), 20 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!