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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-4-11 11:13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PHP中的循环结构大致有for循环,while循环,do{} while 循环以及foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式:$ k+ T, L, {. T, `
  1. <?php# F5 \5 E9 }3 i3 U9 U0 u

  2. 2 [- a+ p, @! h- |
  3. $i = 1;
    9 _6 g, K" K, x! {
  4. while (true) { // 这里看上去这个循环会一直执行
    8 t- r' U7 L  s  J6 }. b* Q) c" N- B
  5.     if ($i==2){// 2跳过不显示6 E, x$ K) W# y4 D6 m: O; u
  6.        $i++;
    : s$ u/ t; v1 x/ }$ i7 ~* h
  7.        continue;
      [1 D4 `. P, T* D
  8.     } else if($i==5) {// 但到这里$i=5就跳出循循环了0 H* b& z6 V+ B9 D7 w) ~2 ?
  9.        break;
    ; G5 i, h; l$ ?
  10.     } else{/ `. I& X1 U4 _0 r
  11.        echo $i . '<br>';7 N7 i7 k! i% S# T. r* l$ v! d
  12.     }
    " X7 b/ w8 n# K
  13.     $i++;
    ; R/ v( x; g) d
  14. }3 @* U! Z$ b8 |+ N6 N3 P9 h
  15. exit;
    ( `* _6 {0 p- d0 R# |" O4 x- G
  16. 2 u  g( O; N( a5 `2 z7 h
  17. echo'这里不输出';) H9 N8 m. f2 {4 j4 u0 [. H
  18. ?>3 Y( H9 ?% g* o8 k
  19. # E  u9 Q& y: @* S: t5 h
  20. 结果:( h, g5 n' p% ^
  21. + c" G3 v3 |0 M4 o" v% i) z, l
  22. 1
    ) c* R; ]5 a6 E, S
  23. 3
    + M$ h, y: c) P' _# H7 o
  24. 4
复制代码
continue
7 m: U' ]/ C# R, T# j  f# \
continue是用来用在循环结构中,控制程序放弃本次循环continue语句之后的代码并转而进行下一次循环。continue本身并不跳出循环结构,只是放弃这一次循环。如果在非循环结构中(例如if语句中,switch语句中)使用continue,程序将会出错。
例如在下面的这段PHP代码片段中:
  1. <?php
    ' w5 u; g/ e: Y
  2. for($i = 1;$i <= 100; $i++ ){
    # [8 b( [4 ^5 {3 I, W; c  A0 g% j% z& f
  3. if($i % 3 == 0 || $i % 7 == 0){
    / S- F1 `6 [) l9 c8 N' S1 |
  4. continue;
    4 s3 J: x' D. ?/ Y
  5. }) D, S  Z0 k1 ~
  6. & #160;  else{* B' \( v& p) s0 D
  7. echo”$i \n<br/>”;
    5 x0 I5 N/ F' T4 ]! H
  8. }7 ?4 n3 ?! g: e. j# k6 G7 M( S; ~
  9. }
    8 r0 f% g# Q+ M
  10. ?>
复制代码
PHP的代码片段的作用是输出100以内,既不能被7整除又不能被3整除的那些自然数,循环中先用if条件语句判断那些能被整除的数,然后执行continue;语句,就直接进入了下个循环。不会执行下面的输出语句了。
break
break是被用在上面所提的各种循环和switch语句中的。他的作用是跳出当前的语法结构,执行下面的语句。break语句可以带一个参数n,表示跳出循环的层数,如果要跳出多重循环的话,可以用n来表示跳出的层数,如果不带参数默认是跳出本重循环。
看下面这个多重循环嵌套的例子:
  1. for($i = 1;$i <= 10; $i++ ){
      _/ ~# s5 e! U2 W1 L
  2.     for($j = 1;$j <= 10;$j++){) V+ n& O- x6 ]+ L& f/ \) j
  3.         $m = $i * $i + $j * $j;' v& S$ L; V% F; B* R- `: l
  4.         echo”$m \n<br/>”;9 `# X; Q2 ]0 a2 \, g9 |+ e9 Y
  5.         if($m < 90 || $m > 190) {: A% D" }. J. c) x
  6.             break 2;2 {& x$ q0 j2 k/ ]) m% b
  7.        }
    - J, _* E+ g. Q  F
  8.     }! C" [" U& p$ ~" B: R& i
  9. }
复制代码
这里使用了break2跳出了两重循环,你可以试验一眼,将2去掉,得到的结果是完全不一样的。如果不使用参数,跳出的只是本次循环,第一层循环会继续执行下去。
goto
goto实际上只是一个运算符,和其他语言一样,PHP中也不鼓励滥用goto,滥用goto会导致程序的可读性严重下降。goto的作用是将程序的执行从当前位置跳转到其他任意位置,goto本身并没有要结束的循环的作用,但其跳转位置的作用使得其可以作为跳出循环使用。但PHP5.3及以上版本停止了对goto的支持,所以应该尽量避免使用goto。* [- }% E% I3 ?
下面的是一个使用了goto跳出循环的例子
  1. for($i = 1000;$i >= 1 ; $i– ){- {2 O' v) }) A. ~7 A
  2.     if( sqrt($i) <= 29){
    , E9 h0 ?- H' Z# N0 r& c( \  f
  3.         goto a;
    # @; D2 X6 H) v, o( V
  4.     }# \, T0 M9 A$ B9 @
  5.     echo “$i”;( j7 M, b3 _; \
  6. }
      Z* t9 b& u' u, I; l! S
  7. a:
    ' h: a7 ^- t" {+ b
  8. echo” this is the end”;
复制代码
例子中使用了goto来跳出循环,这个例子用来检测1000以内,那些数的平方根大于29。
exit
exit是用来结束程序执行的。可以用在任何地方,本身没有跳出循环的含义。exit可以带一个参数,如果参数是字符串,PHP将会直接把字符串输出,如果参数是integer整形(范围是0-254),那个参数将会被作为结束状态使用。
  1. <?php7 s9 H* P( m; X
  2.     for($i = 1000;$i >= 1 ; $i– ){
    # A$ H, `0 r8 g6 \4 ?* l+ v# R# R
  3.         if( sqrt($i) >= 29){" h3 J3 @6 ~* ]
  4.             echo”$i \n<br/>”;$ [- `+ ]6 ?3 q" X8 e: G, T
  5.         }
    2 A" T# L. m' R1 ~+ v  X6 W; J7 E* n
  6.         else{- \2 `. t) n6 q1 C) q
  7.             exit;* [0 O5 M- S$ r) g9 d0 j( x
  8.         }
    ) m9 }! ?; O- X7 ]; R: j
  9.     }6 w$ [2 f; Q. P
  10.     echo”本行将不会被输出”;- i! N1 w) Q7 v+ D% I
  11. ?>
复制代码
上面这个例子中直接在从循环里结束了代码的运行,这样会导致后面的代码都不会被执行,如果是在一个php web页面里面,甚至连exit后面的html代码都不会被输出。
return
return语句是用来结束一段代码,并返回一个参数的。可以从一个函数里调用,也可以从一个include()或者require()语句包含的文件里来调用,也可以是在主程序里调用,如果是在函数里调用程序将会马上结束运行并返回参数,如果是include()或者require()语句包含的文件中被调用,程序执行将会马上返回到调用该文件的程序,而返回值将作为include()或者require()的返回值。而如果是在主程序中调用,那么主程序将会马上停止执行
  1. <?php
    2 D/ |, ]: ~4 s2 P
  2.     for($i = 1000;$i >= 1 ; $i– ){
    ! c) a! s% X1 U0 Q, s
  3.         if( sqrt($i) >= 29){
    5 J5 w. B1 F2 T8 i: ~  k  D
  4.             echo”$i \n<br/>”;
    : A: ^' L; W1 g0 q. i+ P
  5.         }
    - s. B9 u( {7 ^
  6.         else{- ^1 ?3 I: A/ K' Y+ N: v
  7.            return;8 m' m, c. T$ S) n! e$ l' P
  8.         }
    - D" a) K, R9 P& s8 Q  m
  9.     }
    * R2 z0 ?, P" C+ r8 n8 S/ _+ J4 ^
  10.     echo”本行将不会被输出”;
    ! d  s/ E3 N0 H3 V' X# y+ q7 Q1 N
  11. ?>
复制代码
这里的例子和上面使用exit的效果是一样的。
在循环结束条件,自然跳出
这个当然是最好理解了,当循环满足循环临界条件时就是自己退出。
以上是PHP中跳出循环的几种方式的简单总结。
if不是循环结构,所以不能使用break,continue退出。如果你非要在if语句中这样用的话,可以把这个if语句放在一个循环结构中
  1. $i=0;
    # M& Q3 v! ?8 ]: E! n
  2. $s=1;# ^1 g; b& Y. Q/ h2 Q
  3. while($i==0)
    , B% i6 W* V0 S: S; T" o
  4. {
    + D9 @6 n8 S( ^5 P
  5.         if($s==1); h$ t0 d. ~7 I% @; |  _
  6.         {
    3 R2 J% ~6 c0 P8 a
  7.                 $v=8;6 W) H1 C/ w: Z7 Z
  8.                 break;
    : J' w% x- m4 i' I" f9 E
  9.         }/ @9 d5 {) y, H. H. J; R8 {  D. W
  10.         $v=9;
    8 D- b: z4 R+ l: u
  11. }
    1 y  ]! P, X4 [( c6 }; F9 g

  12. " W+ i" Q! o" Q- Q
  13. echo $v;
复制代码

) m0 b5 }" M, t
* X, R% y4 u, J" {( E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 11:39 , Processed in 0.052257 second(s), 20 queries .

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