控制流程语句介绍

 

学过其他编程语言的读者应该知道,制流程语句在语言上有着很重要的位置,一个程序的好坏很大一部分决定于流程的控制,本节将详细介绍PHP脚本语言的流程控制语句,例如,ifelse语句、for循环语句、foreach循环语句和while循环语句等。

1ifelse条件控制语句

ifelse语句是程序控制流程经常应用到的语句,该语句执行时,首先判断用户给出的条件是否为true,否则就执行else语句,该条件控制语句语法格式如下所示:

if (表达式)

{

    //表达式的结果为真时的运行程序段

}else

{

    //表达式的结果为假时的运行程序段

}

由该语句语法格式知,如果表达式结果值为true,就执行if语句下面大括号的语句,否则执行else语句下面大括号的语句。下面创建一个使用条件语句的示例,该示例如代码4.1所示。

代码4.1 使用条件语句示例

<?php

     $s = 22;

          $i = 20;

          if($s==$i)

          {

               echo "这两个值相等<br/>";

                    echo "<a href='http://www.itzcn.com'>汇智科技教学视频网站</a>";

     }

          else

          {

                    echo "这两个值不相等<br/>";

                    echo "<a href='http://www.itzcn.com'>汇智科技教学视频网站</a>";

     }

?>

保存该段代码到服务器中,然后打开浏览器,在地址栏中输入相应的地址,页面效果如图4-1所示。ifelse语句并不是总结合使用,也可以单独使用if语句。

4-1 页面效果图

2ifelse ifelse条件控制语句

该语句也可以称为嵌套if语句,可以在一个if语句中嵌套其他if语句。这样可以将一系列布尔表达式链接起来,它们将依次测试,只有在第一个if测试为false的前提下,才会执行第二个if。类似地,只有在第一个和第二个if测试为false的前提下,才会执行第三个if,直到其中一个求值为true。下面创建一个使用嵌套if语句的示例,该示例使用的还是上一个示例中的数据,不过在本示例中添加了条件,不光判断是否相等,还判断其大小,该示例具体程序如代码4.2所示。

代码4.2 嵌套if语句示例

<?php

     $s = 22;

          $i = 20;

          if($s==$i)

          {

               echo "这两个值相等<br/>";

                    echo "<a href='http://www.itzcn.com'>汇智科技教学视频网站</a>";

     }

          else if($s>$i)

          {

               echo "变量S大于变量I,变量S值为".$s.",变量I值为".$i."<br/>";

                    echo "<a href='http://www.itzcn.com'>汇智科技教学视频网站</a>";

          }

          else

          {

                    echo "变量S小于变量I,变量S值为".$s."变量I值为".$i."<br/>";

                    echo "<a href='http://www.itzcn.com'>汇智科技教学视频网站</a>";

     }

 ?>

在代码4.2中读者可以清楚的看到,变量$s值要大于变量$i的值,执行的语句应该是条件“$s>$i”所在的if语句,执行该段代码,执行效果如图4-2所示。

代码4-2 嵌套if语句示例页面效果图

3switchcase条件语句

如果读者学习过其他变成语言,应该很熟悉switchcase条件语句,该语句适合于从一组互拆分的分支中选择一个执行分支,switch语句非常类似于ifelse ifelse语句,因为它也是根据测试的值来有条件地执行代码。但是,switch语句可以一次将测试变量与多个值进行比较,而不是仅测试一个条件。这种测试仅限于离散的值,而不是像“大于X”这样的子句,所以它的用法有点不同,但它仍是一种强大的技术。

switch语句形式是switch参数的后面跟一组case子句。如果switch参数中表达式的值等于某个case子句旁边的某个值,就执行该case子句中的代码。此时不需要使用花括号把语句组合到块中;只需使用break语句标记每个case代码的结尾即可。也可以在switch语句中包含一个default子句,如果表达式不等于任何case子句的值,就执行default子句的代码。下面创建一个使用switch语句的示例,该示例如代码4.3所示。

代码4.3 使用switch语句示例

          $day = 2;

          switch($day)

          {

              case 0:

                      echo("<br/>今天是星期日");

                      break;

                    case 1:

                      echo("<br/>今天是星期一");

                      break;

                    case 2:

                      echo("<br/>今天是星期二");

                      break;

                    case 3:

                      echo("<br/>今天是星期三");

                      break;

              case 4:

                       echo("<br/>今天是星期四");

                            break;

              case 5:

                       echo("<br/>今天是星期五");

                            break;

                    default:

                       echo("<br/>今天是星期六");

                            break;

          }

代码4.3中使用了switch语句,首先为该语句传递了一个变量,然后switch语句使用case判断该值执行分支语句,保存该段代码页面效果如图4-3所示。

4-3 使用switch语句示例页面效果图

4for循环语句

在上面讲解条件控制语句,下面将要讲解PHP提供的循环控制语句,在PHP中提供了四种循环机制:forwhiledowhileforeach循环语句,下面首先讲解for循环语句。

for循环机制可以执行指定的次数,并维护它自己的计数器。for循环是所谓的预测试循环,因为循环条件是在执行循环语句前计算的,如果循环条件为假,循环语句就根本不会执行。要定义for循环,首先需要初始化计数器变量的一个起始值,然后设置继续循环的条件,它应涉及到计数器变量,在每次循环的最后,对计数器变量执行一个操作。下面创建一个for循环机制示例,该示例如代码4.4所示。

代码4.4 使用for循环机制示例

<table><tr>

<?php

 for ( $i = 0; $i < 100; $i++ )

 {

       if($i%10 ==0 && $i!=0)

       {

               echo "</tr><tr><td><span style='color:#000; font-size:16px'>".$i."</span></td>";             

       }

       else

       {      

          if($i%99 ==0&& $i!=0)

              {

                        echo "<td><span style='color:#000; font-size:16px'>".$i."</span></td></tr>";

              }

              else

              {

                         echo ("<td><span style='color:#000; font-size:16px'>".$i."</span></td>");

              }

       }

 }

?>

</table>

在代码4.4中生命了一个$i变量,并设置其初始值为0,用作循环计数器,接着测试其是否小于100,因为这个条件等于true,所以执行循环中的代码,显示值0。然后给该计数器加1,再次执行该过程。当$i等于100时,循环停止。执行该段代码,执行页面效果如图4-4所示。

4-4 执行循环语句页面效果图

在应用程序中,嵌套的for循环非常常见,在每次迭代外部的循环时,内部循环都要彻底执行完毕。这种模式通常用于在矩形多维数组中遍历每个元素。最外部的循环遍历每一行,内部的循环遍历某行上的每个列,最典型的示例就是冒泡排序,由于该示例很常见在此就不再列举。

5while循环语句

while循环语句也是一个预测试的循环,该循环制定了一个条件语句,在执行while循环时,不知道重复执行一个语句或语句块的次数。通常,在某次迭代中,while循环体中的语句把布尔标记设置为false,结束循环。下面使用该循环机制创建一个示例,具体讲解while循环机制,示例如代码4.5所示。

代码4.5 while循环机制示例

<?php

    echo("<br/>");

    $i=1;

         while($i>0&&$i<11)

         {

                   if($i%2==0)

                   {

                       echo("<span style='font-size:13px;color:red'>".$i."次,执行该段代码</span><br/>");

                   }

                   else

                   {

                             echo("<span style='font-size:13px;color:red'>".$i."次,执行该段代码</span>——");

             }

             $i++;

         }

?>

在代码4.5中,变量$i的初始值为1,然后根据while条件执行循环,接下来$i1,进行循环,知道$i值为11循环为止,执行该段代码,页面效果如图4-5所示。

4-5 页面效果图

6dowhile循环语句

dowhile循环条件是while的一种变体,它在代码块的结束处验证循环条件,而不是在开始处,因此dowhile循环语句至少执行一次,所以该语句适合与至少执行一次循环体的情况,下面创建一个示例,具体说明dowhile循环语句的使用方法,该示例如代码4.6所示。

代码4.6 使用do…while循环语句示例

<?php

         echo("<br/>");

         $tf = false;

         do

         {

            echo("该循环语句至少执行一次");

         }while($tf)

?>

在代码4.6中可以看到,变量$tf初始值为false,但还是会输出结果。也就是说,dowhile语句先不管表达式的结果是真是假,都会在执行一次后才会去判断表达式的结果。该段代码执行页面效果如图4-6所示。

4-6 页面效果图

7foreach循环语句

foreach循环可以迭代出集合中的每一项,但并不能修改集合中的任何一项,可以用于遍历数组的循环语句,该语句从PHP 4版本开始使用,和Perl语言比较相似。从PHP5.0开始,也可以用于对象。类型为集合元素的类型,变量名表示集合中的每一个元素。每次执行一次循环语句,循环变量就读取集合中的一个元素。下面创建一个示例,具体说明如何运用foreach语句,示例如代码4.7所示。

代码4.7 运用foreach循环语句示例

<?php

         echo("<br/>");

         $arr = array("唐晓阳","裴亚敏");

         foreach($arr as $temp)

         {

             echo("你的姓名是:".$temp."<br/>");   

    }

?>

在代码4.7中,foreach语句循环的参数是由两个元素组成的表达式,用关键字as分隔,关键字左边为要访问的元素集合的名称,右边为临时变量。在IE浏览器中执行该段代码,页面效果如图4-7所示。

4-7 页面效果图

8break跳转语句

break语句表示程序的控制权强制性的从当前的语句块跳转出来,如果包含一个break语句,将立即结束dowhileforforeachswitchwhile循环的执行。下面创建一个使用break语句的示例,具体讲解如何使用break语句,该示例如代码4.8所示。

代码4.8 使用break跳转语句示例

<?php

         echo("<br/>");

         $numarr=array(1,5,8,9,6,12,15,16,3);

         for($count = 0;$count< count($numarr); $count++)

         {

            if($count==3)

            {

                      break;

            }

            echo($numarr[$count]."----");

         }

?>

9continue语句

continue语句有些类似于break语句,但是只能出现在循环体中。与break语句的区别在于:continue并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单的讲,continue是忽略循环语句的当次循环。下面使用该跳转语句创建一个示例,该示例如代码4.9所示。

代码4.9 使用continue跳转语句

<?php

 for ($i = 0; $i < 10; $i++) {

      if ($i == 5)

      {

         continue;

         print "$i"n";

      }

      echo($i);

 }

?>

执行该段代码,执行结果如下所示:

012346789

posted @ 2008-12-24 09:42  yound  阅读(406)  评论(0编辑  收藏  举报