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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-4-11 11:13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PHP中的循环结构大致有for循环,while循环,do{} while 循环以及foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式:  b/ g; W4 c* a1 N
  1. <?php
    ) M' W3 `5 m- G; g" K* G* ~

  2. , ?6 @# r' [% K# _- ]( M
  3. $i = 1;
    & S* ?, f! E' K! q# f: g" _
  4. while (true) { // 这里看上去这个循环会一直执行
    $ a; X8 @5 w- t0 z- v
  5.     if ($i==2){// 2跳过不显示
    # c3 W! {" p* L3 g& G- Y" b  G' N2 S: ?0 m
  6.        $i++;; |1 z0 O5 j4 Q
  7.        continue;4 z6 I: }  C# _! m
  8.     } else if($i==5) {// 但到这里$i=5就跳出循循环了
    6 U  V8 v; b7 O$ w. m
  9.        break;
    $ j$ b; [& @! {/ P  [1 i5 v
  10.     } else{/ e& s- _5 G6 P* ^  j
  11.        echo $i . '<br>';2 H% }8 z/ C+ w( ^' D! l
  12.     }
    $ V( F3 Y" \) P3 ]
  13.     $i++;
    5 E* N& l: Q$ T9 J1 v
  14. }
    9 l' o  ~2 _- q. s- p( ]4 P
  15. exit;
    ( P, |7 {7 K/ \  r) H) p  W

  16. / S- p1 F: `- F1 V8 P
  17. echo'这里不输出';) D$ g+ ^2 Z, Q5 A6 N# y6 \0 j1 z8 P, m
  18. ?>
    / S( @) I" s7 I# W& O( s, ?8 y' W* {

  19. ) G  T1 t; u( _; N0 {  n" }
  20. 结果:! ^/ d8 Z( p$ a+ R7 ]' p8 ?& K
  21.   a% B7 [  ]1 n- G' c! p. w( a1 U7 o
  22. 1
    ! q. _1 M' ~" L  \. [. P1 U/ F
  23. 36 d- X! z2 |( y) t' M
  24. 4
复制代码
continue) Q" P: e# {4 E. _! ~7 E: O8 b1 l
continue是用来用在循环结构中,控制程序放弃本次循环continue语句之后的代码并转而进行下一次循环。continue本身并不跳出循环结构,只是放弃这一次循环。如果在非循环结构中(例如if语句中,switch语句中)使用continue,程序将会出错。
例如在下面的这段PHP代码片段中:
  1. <?php
    7 k2 ^$ N! S7 ?7 ?, ^6 @; Z! q
  2. for($i = 1;$i <= 100; $i++ ){
    5 @) }& q5 ?2 _& f
  3. if($i % 3 == 0 || $i % 7 == 0){
    " j: c2 \+ H, M) g
  4. continue;# O! W" Y" f0 o3 y. w5 h+ f
  5. }
    % T# {8 `, G8 Y* O
  6. & #160;  else{4 N* z! s8 W7 T& r) `$ ^9 a
  7. echo”$i \n<br/>”;' Q# J: I; n+ `1 }4 J7 h
  8. }
    % u( ~/ O5 i6 ^* d) J+ x4 Z3 c
  9. }
    * n' [" S2 A' S& j" q# ^
  10. ?>
复制代码
PHP的代码片段的作用是输出100以内,既不能被7整除又不能被3整除的那些自然数,循环中先用if条件语句判断那些能被整除的数,然后执行continue;语句,就直接进入了下个循环。不会执行下面的输出语句了。
break
break是被用在上面所提的各种循环和switch语句中的。他的作用是跳出当前的语法结构,执行下面的语句。break语句可以带一个参数n,表示跳出循环的层数,如果要跳出多重循环的话,可以用n来表示跳出的层数,如果不带参数默认是跳出本重循环。
看下面这个多重循环嵌套的例子:
  1. for($i = 1;$i <= 10; $i++ ){$ O1 z5 G  Y3 s' L& t4 R
  2.     for($j = 1;$j <= 10;$j++){
    ) v5 b6 K& {2 P  }+ J3 t
  3.         $m = $i * $i + $j * $j;' z- b: w. a8 m7 ]5 N6 F* [
  4.         echo”$m \n<br/>”;
    2 }+ ?) P: D/ x6 ]. I. Q) T9 C$ d
  5.         if($m < 90 || $m > 190) {
    0 {0 r4 C0 s0 r$ H$ Z: C& Z; N* H
  6.             break 2;
    5 y! k$ J: m/ @. l4 b
  7.        }
    : S7 U$ ]+ l4 s8 {$ R# s
  8.     }% R5 ^. ^3 u0 p: |
  9. }
复制代码
这里使用了break2跳出了两重循环,你可以试验一眼,将2去掉,得到的结果是完全不一样的。如果不使用参数,跳出的只是本次循环,第一层循环会继续执行下去。
goto
goto实际上只是一个运算符,和其他语言一样,PHP中也不鼓励滥用goto,滥用goto会导致程序的可读性严重下降。goto的作用是将程序的执行从当前位置跳转到其他任意位置,goto本身并没有要结束的循环的作用,但其跳转位置的作用使得其可以作为跳出循环使用。但PHP5.3及以上版本停止了对goto的支持,所以应该尽量避免使用goto。, O3 J! \2 T$ P% z. S
下面的是一个使用了goto跳出循环的例子
  1. for($i = 1000;$i >= 1 ; $i– ){, H3 j, ~- i, ]8 ^1 I: D: R
  2.     if( sqrt($i) <= 29){% }$ w/ B  ~; c
  3.         goto a;
    6 B2 I" h$ U+ t$ S$ V- {
  4.     }, P. n' o" E0 o+ h
  5.     echo “$i”;( J4 b3 }/ h. a& F- a; A
  6. }+ a7 h. ^  c9 @* n8 x
  7. a:- \' N2 \" q* @8 H8 u) B/ o1 a
  8. echo” this is the end”;
复制代码
例子中使用了goto来跳出循环,这个例子用来检测1000以内,那些数的平方根大于29。
exit
exit是用来结束程序执行的。可以用在任何地方,本身没有跳出循环的含义。exit可以带一个参数,如果参数是字符串,PHP将会直接把字符串输出,如果参数是integer整形(范围是0-254),那个参数将会被作为结束状态使用。
  1. <?php
    4 A0 M8 F$ _  a
  2.     for($i = 1000;$i >= 1 ; $i– ){9 T) g+ A8 P" K+ @
  3.         if( sqrt($i) >= 29){4 u/ m+ D) a, Z4 J
  4.             echo”$i \n<br/>”;
    + ^1 ]0 M/ I- S: l
  5.         }1 P0 y# R3 X5 a& Z
  6.         else{) O* G: h& S4 T  E% {
  7.             exit;
      S+ v4 \4 `/ `3 l
  8.         }2 @, O6 y- T- I, z( |
  9.     }7 u# k6 E, p2 e- q2 a5 K& f+ J% t8 S
  10.     echo”本行将不会被输出”;
    # N- O  n; r$ p4 u  R! V
  11. ?>
复制代码
上面这个例子中直接在从循环里结束了代码的运行,这样会导致后面的代码都不会被执行,如果是在一个php web页面里面,甚至连exit后面的html代码都不会被输出。
return
return语句是用来结束一段代码,并返回一个参数的。可以从一个函数里调用,也可以从一个include()或者require()语句包含的文件里来调用,也可以是在主程序里调用,如果是在函数里调用程序将会马上结束运行并返回参数,如果是include()或者require()语句包含的文件中被调用,程序执行将会马上返回到调用该文件的程序,而返回值将作为include()或者require()的返回值。而如果是在主程序中调用,那么主程序将会马上停止执行
  1. <?php0 b. d& I& b7 O! k
  2.     for($i = 1000;$i >= 1 ; $i– ){$ [/ t+ D6 F7 P6 V. `! |
  3.         if( sqrt($i) >= 29){, A& i- o7 M" {! l8 I8 B
  4.             echo”$i \n<br/>”;2 x9 d+ s: G8 W0 t% f
  5.         }
    $ c; u0 \) `7 t* v" Z: X( a
  6.         else{- o9 v7 Z" L+ u& y
  7.            return;! b( N) |; q' s  S, {1 L
  8.         }
    1 S* J5 v$ ^% `# ~8 v4 k
  9.     }
    9 D! j  M6 l- r
  10.     echo”本行将不会被输出”;; _2 X+ U: Q, m" L% Y2 ~% G
  11. ?>
复制代码
这里的例子和上面使用exit的效果是一样的。
在循环结束条件,自然跳出
这个当然是最好理解了,当循环满足循环临界条件时就是自己退出。
以上是PHP中跳出循环的几种方式的简单总结。
if不是循环结构,所以不能使用break,continue退出。如果你非要在if语句中这样用的话,可以把这个if语句放在一个循环结构中
  1. $i=0;
    # _% L8 F0 H# ]0 h" n; l
  2. $s=1;
    ; O6 X" z/ b# n+ ]0 N
  3. while($i==0)
    ; B) ], U4 S6 Y/ y
  4. {
    1 x' k8 @# b* t% g$ s
  5.         if($s==1)1 j/ M+ |5 ~9 U# G' f
  6.         {
      N" q% S) _* a' m* g
  7.                 $v=8;0 C( w: \) X( F1 j5 c: B( r3 u
  8.                 break;/ }9 F- y$ X" @" l
  9.         }
    ' q0 G2 b7 R3 J/ n% Y" e' d2 h
  10.         $v=9;; o/ G( }7 |& F' y
  11. }
      w7 J+ R+ b" G# W

  12.   K. s! J2 O+ r7 V' ?7 z' k: z
  13. echo $v;
复制代码
4 k; Y3 y; Q! w, \% I

/ j+ t# I7 E/ c& |; |# P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 20:52 , Processed in 0.063535 second(s), 20 queries .

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