美文网首页
3.PHP的流程控制结构

3.PHP的流程控制结构

作者: 楠哥哥_0b86 | 来源:发表于2018-03-27 12:07 被阅读0次

在任何一门设计语言中,都需要支持满足程序结构化所需要的三种基本结构、顺序结构、分支结构(选择结构或条件结构)和循环结构。

最基本的是循序结构。顺序结构就是语句按出现的先后次序顺序执行。在PHP的程序设计语言中,顺序结构的语句主要是赋值语句、输入/输出语句等,所以对于顺序结构就不必过多介绍了。

1. 分支结构

在程序中使用分支结构可以有以下几种形式:

  • 单一条件分支结构
  • 双向条件分支结构
  • 多向条件分支结构
  • 巢状条件分支结构
1.1 单一条件分支结构(if)

if语句的格式如下:

if(表达式)
    语句块;

if(表达式){
    语句块;
}
1.2 双向条件结构分支(else子句)
if(表达式){
    语句块1;
}else{
    语句块2;
}
1.3 多向条件分支结构(elseif子句)
 if(表达式){
    语句块1;
  }
 elseif{
    语句块2;
  }
……
 elseif{
    语句块n;
}
 else{
  语句块n+1;
}
1.4 多向条件分支结构(switch语句)
switch(表达式)    //使用switch关键字,先对后面小括号中的表达式求值,然后结果匹配哪个值就执行哪个case语句
{
    case 值1:
        语句块1;
        break;
    case 值2:    //和值2匹配时,没有break,控制权将转移到下一个case中的语句
    case 值3:
        语句块2;    //该语句匹配2、3两个值
        break;
    ……
    case 值n:
        语句块n;
        break;
    default:    //都不匹配的时候执行的默认语句
        语句块n+1;
}

2 循环结构

PHP中提供了while、do-while和for三种循环。
注意,循环体应包含趋于结束的语句(即循环变量值的改变),否则就可能成为死循环。所以使用循环时一定要有一个停止的条件。根据循环停止的条件不同,在PHP中提供了两种类型的循环语句。

  • 一种是计数循环语句,通常使用for循环语句完成。
  • 另一种是条件型循环语句,通常使用while或do-while循环语句完成。
2.1 while语句
while(表达式){    //表达式计算结果是一个布尔值,为TRUE时执行循环
    循环体;
}
2.2 do…while循环
do{
    循环体;
}while(表达式);    //别忘记这里一定有个分号

while和do…while的区别在于,do……while的循环体至少会执行一次。

2.3 for语句

for循环适用于明确知道循环次数的情况。

for(初始化;条件表达式;增量){
            循环体;
}

在for循环中,初始化总是一个赋值语句,用来控制循环变量初始值;条件表达式是一个关系表达式,它决定什么时候推出循环;增量表示每循环一次变量如何变化。循环体可以是单条语句和复合语句,如果是单条语句也可以不使用花括号。

<?php
for($i=1;$i<=10;$i++)
      echo "for循环测试";

在for循环的三个表达式中,一个是多个表达式为空是允许的,通常被称为for循环的退化形式。可以将以上循环改写成下列几种格式:

<?php
//将for循环的第一部分初始条件提出来,放到for语句前面执行,但for语句中的分号要保留
$i=1;
for(;$i<=10;$i++){
      echo "for循环测试";
}

//将第三部分提出来,放到for语句前面执行,但也要将分号保留
$i=1;
for(;$i<=10;){
      echo "for循环测试";
      $i++;
}

还可以每个表达式中编写多条语句:

<?php
for($i=1,$j=5,$k=10;$i<=10;$i++,$j+=5,$k+=10){
    echo "\$i=$i,\$j=$j,\$k=$k<br>";
}

另外,增量不仅可以是增加的,也可以是递减的

3 特殊语句控制流程

这里介绍退出循环、跳过循环的语句。

3.1 break语句

break可以结束for、foreach、while、do……while或switch结构的执行。
执行break后,将退出for循环继续执行之后的语句。

3.2 contine语句

continue语句只能用在循环语句内部,功能是跳过该次循环,继续执行下一次循环结构。
在while和do……while语句中,continue是跳转到循环开始处继续执行。
对于for循环随后的工作是变量更新。
示例:求证书1~100的累加值,但要求跳过所有个数为3的数。

<?php
$sum=0;
for($i=1;1<+100;$i++){
    if($i%10==3)
        continue;
    $sum+=$i;
}

continue语句的功能如下:

  • 跳过本次循环,也可以接受一个可选的数字参数来决定跳出多重语句;
  • 在循环中遇到contine就,就不会执行continue之后的语句;
  • contine用于结束本次循环,继续下一次循环。
3.3 exit语句

在当前脚本中只要执行到exit语句,不管在任何结构中,都会直接退出当前脚本。
exit()是一个函数,die()是exit()函数的别名。它带有一个参数可以输出一条消息。
下面是一个数据库连接失败的话利用exit()输出错误并退出的例子:

<?php
//如果连接失败则输出错误信息并退出脚本
$conn=mysql_connect("localhost","root","123456")or exit("连接数据库失败!");

//如果连接后选择数据库失败则输出错误信息并退出脚本
mysql_select_db("db")or die("连接数据库失败!");

$result=mysql_query(select * from table);
if(!result){
      echo "SQL语句执行失败";
//直接退出当前脚本
 exit;
}

顺序结构、分支结构、循环结构并不是彼此孤立的,可以彼此多层嵌套。

4 PHP新特性——goto语句

goto于具有用于跳转到程序的指定位置。
goto目标后带上目标位置的标志,且在目标位置用目标名加冒号标记。
goto可以用来实现循环:

<?php
//使用goto语句,循环10次
$=1;

st:
    echo"第{$i}次循环<br>";

    if($i++==10)
          goto end;

goto st;

end:
echo "语句结束。";

非goto的循环如果有多层,需要从多层循环中跳出,goto语句也是最好的选择:

<?php
for($i=0,$j=50;$<100;$i++){
    while($j--){
        if($j==17){
            goto end;
        }else{
            echo "变量i={$i},变量j={$j}<br>";
        }
    }
  }
echo "i=$i";

end:

除了编写循环之外,goto比较常用于实现程序跳转:

<?php
$var=2;

switch($var){
    case 1:
        goto one;
        echo"one";
    case 2:
        goto two;
        echo"two";
    case 3:
        goto three;
        echo"three";
}

one:
    echo "执行1";
    exit;

two:
     echo "执行2";
     exit;
three:
      echo "执行3";
      exit;

另外,PHP中的goto使用也顶一定的限制,只能在同一个文件和作用域中跳转,也就是说无法跳出一个函数或类方法,也无法跳入另外一个函数,更无法跳入任何循环和switch结构。

goto语句的常见用法是跳出循环或switch语句,可以替代多层break。

相关文章

  • 3.PHP流程控制结构

    任何 PHP 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,甚至一个什么也不做的...

  • 3.PHP的流程控制结构

    在任何一门设计语言中,都需要支持满足程序结构化所需要的三种基本结构、顺序结构、分支结构(选择结构或条件结构)和循环...

  • 3.php流程控制

    条件控制语句 条件控制语句是根据条件选择执行不同的代码片段。条件控制语句分为四类:1)if 语句 -- 在条件...

  • 3.PHP流程控制

    思考:平常针对业务需求编写的代码通常以行为单位,那么代码的执行逻辑是什么样子的呢? 引入:正常情况下,代码就是按照...

  • [JS基础]笔记四

    js流程控制语句 流程控制 顺序结构、分支结构、循环结构 分支结构 if 分支结构 if else 双分支结构语句...

  • 09-Go语言流程控制-指趣学院

    Go语言流程控制基本概念 Go语言流程控制和C语言一样, 也有三大流程控制结构顺序结构(默认结构)选择结构(if ...

  • 第4天 PHP分支、循环结构

    6. 流程控制 流程控制,就是研究程序的走向。 6.1. 流程控制概述 6.1.1. 三大流程结构: 顺序结构:程...

  • 【麦兜】Java基础知识巩固——流程控制

    流程控制 不论哪种编程语言,都有各种各样的流程控制结构,本篇文章介绍的就是各种不同的流程控制结构,比如:顺序结构、...

  • 流程控制的基本概念

    流程控制是指控制代码的执行顺序。 在JavaScript中,有三种基本的流程控制结构:顺序结构、选择结构和循环结构...

  • Java知识之流程控制

    Java流程控制框架图 流程控制 一. 循环结构二. 分支结构三. 顺序结构 循环结构 for循环,for-eac...

网友评论

      本文标题:3.PHP的流程控制结构

      本文链接:https://www.haomeiwen.com/subject/hjjjcftx.html