php-流程控制


代码执行的方向

1、控制分类:

  • 顺序结构

    代码从上往下,顺序执行(代码执行的最基本结构)

  • 分支结构

    给定一个条件,同时有多个可执行代码,然后根据条件执行某一块代码

  • 循环结构

    在某个条件控制范围内,指定的代码可以重复执行

 

2、顺序结构:

最基本结构,所有代码默认从上往下依次执行

 

3、分支结构:

主要有两种:if和switch

1、if分支

适用于所有的条件判断

基本语法:

  • 最简if:只有一段代码,但是可以选择是否执行

    1 if(条件表达式){
    2     //满足条件所要执行的内容;//   //顺序执行
    3 }
  • 基础if:有两面性,满足条件和不满足条件,都有要执行的代码

    1 if(条件表达式){
    2     //满足条件所要执行的内容;//   //顺序执行
    3 }
    4 else{
    5     //不满足条件所要执行的内容;//   //顺序执行
    6 }
  • 复杂if结构:在判断条件之后,通常就有两种结果,满足或不满足,在不满足之后,再次进行条件判断

     1 if(条件表达式){
     2     //满足条件所要执行的内容;//   //顺序执行
     3 }
     4 else if(条件表达式2){
     5     //不满足条件1,但满足条件2所要执行的内容;//   //顺序执行
     6 }
     7 ....
     8 else{
     9     //全不满足条件所要执行的内容;//
    10 }

     

 

2、switch分支

switch分支:有一组情形存在,通过一个条件,通常有多个值(会出现多种情况),但是每一个值都会有对应不同的代码要执行。

switch判断方式;是将条件放到分支结构内部判断。

switch基本语法:

 1 switch(条件表达式){
 2 //所有条件判断;逐个进行
 3     case 值1:
 4         要执行的代码段;
 5         break;//如果条件匹配成功,则不会再进行其他的条件
 6     case 值2:
 7         要执行的代码段;
 8         break;
 9     ...
10     case 值n:
11         要执行的代码段;
12         break;
13     //可以使用类似else的语法:都不匹配
14     Default:
15         //匹配失败的代码;都不满足条件
16         Break;
17 }

 

4、循环结构:

代码段在一定的控制下,可以多次执行

循环结构有:

  • for循环:通过条件,起始和终止判断执行

  • while循环:通过判断条件终止

  • do-while循环:跟while差不多

  • foreach循环:专门针对数组

 

1、for循环

基本语法与示例:

 1 for(条件表达式1;条件表达式2;条件表达式3){
 2     //条件表达式1:定义初始化条件,可以有多种赋值语句存在,使用逗号分隔即可
 3     //条件表达式2:边界判断,限定循环执行的次数
 4     //条件表达式3:用来执行条件变化(通常 是自操作)
 5 }
 6 
 7 示例:
 8 <?php
 9     for($i=1;$a<=10;$i++){
10     echo $i;
11     }
12 ?>
13 //结果:1 2 3 4 5 6 7 8 9 10

执行原理:

  • 执行条件表达式1:定义初始化条件(执行一次)

  • 执行条件表达式2:判断条件(n次)

    满足:执行循环体

    不满足:退出循环

  • 执行条件表达式3:循环变量变化(n次)

  • 执行条件表达式2:判断条件(n次)

  • ...

  • 直到条件表达式2不满足条件

 

2、while循环

while首先进行条件判定,然后执行循环体

基本语法与示例:

 1 条件初始化;
 2  3 while(条件表达式){
 4  5     //条件表达式就是判断边界的条件
 6  7     循环体;       //循环条件的变化
 8  9 }
10 
11 示例:
12 <?php
13     $i=1
14     while($i<=10){
15         echo $i++;
16     }
17 ?>
18 //结果:1 2 3 4 5 6 7 8 9 10

 

for与while选择:

  • 如果是基于固定已知条件(数值而且是由规律的变化),使用for循环

  • while可以做灵活的条件判断

 

3、do-while循环
  • 看着很想while,while首先进行条件判定,然后执行循环体,有可能出现第一次条件就不满足,则失败(循环体一次都不会执行)
  • do-while是先干了再说(执行循环体),后判断条件(至少会执行一次循环体)

基本语法与示例:

 1 do{
 2     //循环体
 3 }
 4 while(条件表达式);
 5 
 6 示例:
 7 <?php
 8     $i=1;
 9     do{
10         //执行输出
11         if($i % 2 != 1){
12         echo $i;
13         }
14         $i++;
15     }
16     while($i<=10);
17 ?>
18 //结果:2 4 6 8 10

 

 

4、循环控制:

在循环内部对循环本身进行控制

  • 中断控制:重新开始循环,循环体种还有其他内容,也再执行

    continue层级:默认是1(循环可以多层嵌套)

  • 终止控制:循环直接结束

    break层级:默认是1

 1 示例1:
 2 <?php
 3     $i=1;
 4     while($i<=100){
 5         if($i % 5!=0){
 6         $i++;
 7         continue;    //重新循环,进行判断
 8         }
 9         echo $i++;
10     }
11 ?>
12 //结果:5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
13 
14 示例2:
15 <?php
16     $i=1;
17     while($i<=100){
18         if($i % 5!=0){
19         $i++;
20         break;    //终止循环,跳出循环
21         }
22         echo $i++;
23     }
24     echo $i;
25 ?>
26 //结果:2
  • 因为循环经常性会碰到嵌套(循环中间包含循环),如果在循环内部有些条件下,明确可以知道当前循环(或者说外部循环)不需要继续执行了,那么就是可以使用循环控制来实现
  • 其中内部循环也可以控制到外部,就是通过使用层级参数
  • continue:当前自己的循环后面的内部不再执行,同时外部循环如果还有循环体也不再执行
  • break:当前自己循环结束,同时外部也结束(如果还有外部不受影响,继续执行)

 

5、流程控制替代语法

分支和循环结构的替代语法

php本身是嵌入到html种的脚本语言,组要在html中书写一些关于判断或者循环的结构语法,必须符合php标签规范,需要在html与php进行混搭,如果使用原始的php代码那么会非常不美观

 1 示例:打印99乘法表
 2 <table border=1>
 3     <?php  for($i=1;$i<10;$i++){ ?>
 4     <tr>
 5         <?php  for($j=1;$j<=$i;$j++){ ?>
 6         <td>
 7             <?php echo $i.'*'.$j.'='.$i*$j;?>
 8         </td>
 9         <?php }?>
10     </tr>
11     <?php }?>
12 </table>
13 
14 替换:{-->:
15 
16 }-->endfor;
17 
18 示例:
19 <table border=1>
20     <?php  for($i=1;$i<10;$i++): ?>
21     <tr>
22         <?php  for($j=1;$j<=$i;$j++): ?>
23         <td>
24             <?php echo $i.'*'.$j.'='.$i*$j;?>
25         </td>
26         <?php endfor;?>
27     </tr>
28     <?php endfor;?>
29 </table>

 

PHP中具体有哪些替代语法呢?PHP应该在HTML中只做数据输出,输出通常伴有条件判断和循环操作,因此PHP提供了对应分支结构和循环结构的替代语法:全部都是对应的一个模式:

{ -->;

}-->end+对应的起始标记替代

  • if

  • switch

  • for

  • whilr

  • foreach

 

posted @ 2020-09-08 11:23  山鬼不识字  阅读(151)  评论(0编辑  收藏  举报