控制流程语句介绍
学过其他编程语言的读者应该知道,制流程语句在语言上有着很重要的位置,一个程序的好坏很大一部分决定于流程的控制,本节将详细介绍PHP脚本语言的流程控制语句,例如,if…else语句、for循环语句、foreach循环语句和while循环语句等。
1.if…else条件控制语句
if…else语句是程序控制流程经常应用到的语句,该语句执行时,首先判断用户给出的条件是否为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所示。if…else语句并不是总结合使用,也可以单独使用if语句。
图4-1 页面效果图
2.if…else if…else条件控制语句
该语句也可以称为嵌套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语句示例页面效果图
3.switch…case条件语句
如果读者学习过其他变成语言,应该很熟悉switch…case条件语句,该语句适合于从一组互拆分的分支中选择一个执行分支,switch语句非常类似于if…else if…else语句,因为它也是根据测试的值来有条件地执行代码。但是,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语句示例页面效果图
4.for循环语句
在上面讲解条件控制语句,下面将要讲解PHP提供的循环控制语句,在PHP中提供了四种循环机制:for、while、do…while和foreach循环语句,下面首先讲解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循环非常常见,在每次迭代外部的循环时,内部循环都要彻底执行完毕。这种模式通常用于在矩形多维数组中遍历每个元素。最外部的循环遍历每一行,内部的循环遍历某行上的每个列,最典型的示例就是冒泡排序,由于该示例很常见在此就不再列举。
5.while循环语句
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条件执行循环,接下来$i加1,进行循环,知道$i值为11循环为止,执行该段代码,页面效果如图4-5所示。
图4-5 页面效果图
6.do…while循环语句
do…while循环条件是while的一种变体,它在代码块的结束处验证循环条件,而不是在开始处,因此do…while循环语句至少执行一次,所以该语句适合与至少执行一次循环体的情况,下面创建一个示例,具体说明do…while循环语句的使用方法,该示例如代码4.6所示。
代码4.6 使用do…while循环语句示例
<?php
echo("<br/>");
$tf = false;
do
{
echo("该循环语句至少执行一次");
}while($tf)
?>
在代码4.6中可以看到,变量$tf初始值为false,但还是会输出结果。也就是说,do…while语句先不管表达式的结果是真是假,都会在执行一次后才会去判断表达式的结果。该段代码执行页面效果如图4-6所示。
图4-6 页面效果图
7.foreach循环语句
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 页面效果图
8.break跳转语句
break语句表示程序的控制权强制性的从当前的语句块跳转出来,如果包含一个break语句,将立即结束do…while、for、foreach、switch或while循环的执行。下面创建一个使用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]."----");
}
?>
9.continue语句
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