计算机非常擅长的一件事情就是自动地、重复地执行任务。如果某些任务需要以相同的方式多次执行,可以使用循环语句来重复程序中的某些部分。
Bob希望在客户订单中加入一个运费表。对于Bob所使用的送货人来说,运费的多少取决于包裹要运送的距离。使用一个简单的公式就可以很容易地计算出所需的运费。
我们希望的运费表如图1-7所示。
图 1-7 运费表显示了运费随着距离的增加而增加程序清单1-2给出了显示该运费表的HTML代码,可以看出这是一段很长而且重复的代码。
程序清单1-2 freight.html——Bob运费表的HTML代码
<html>
<body>
<table border="0"cellpadding="3">
<tr>
<td bgcolor="#CCCCCC">Distance</td>
<td bgcolor="#CCCCCC">Cost</td>
</tr>
<tr>
<td >50</td>
<td >5</td>
</tr>
<tr>
<td >100</td>
<td >10</td>
</tr>
<tr>
<td >150</td>
<td >15</td>
</tr>
<tr>
<td >200</td>
<td >20</td>
</tr>
<tr>
<td >250</td>
<td >25</td>
</tr>
</table>
</body>
</html>
如果我们能够使用一台低廉而又不知疲倦的计算机来完成这些,为什么还要找一个容易疲劳的人来输入这些HTML代码,并且还要付给他费用呢?
循环语句可以让PHP重复地执行一条语句或一个语句块。
1.15.1 while循环
PHP中最简单的循环就是while循环。就像if语句一样,它也依赖于一个条件。
while循环语句和if语句的不同就在于if语句只有在条件为true的情况下才执行后续的代码块一次,而while循环语句只要其条件为true,就会不断地重复执行代码块。
通常,当不知道所需的重复次数时,可以使用while循环语句。如果要求一个固定次数的重复,可以考虑使用for循环语句。
while循环的基本结构如下所示:
while(condition)expression;
如下所示的while循环语句可以显示数字1~5。
$num=1;
while($num<=5){
echo$num."<br/>";
$num++;
}
在每一次迭代的开始,都将对条件进行测试。如果条件为false,该语句块将不会执行,而且循环就会结束。循环语句后面的下一条语句将被执行。
我们可以使用while循环来完成一些更有意义的任务,例如显示图1-7所示的运费表。
程序清单1-3给出了使用while循环生成运费表的代码。
程序清单1-3 freight.php——用PHP生成的Bob运费表
<html>
<body>
<table border="0"cellpadding="3">
<tr>
<td bgcolor="#CCCCCC">Distance</td>
<td bgcolor="#CCCCCC">Cost</td>
</tr>
<?
$distance=50;
while($distance<=250){
echo"<tr>
<td align=/"right/">".$distance."</td>
<td align=/"right/">".($distance/10)."</td>
</tr>/n";
$distance+=50;
}
?>
</table>
</body>
</html>
为了使得由这个脚本所生成的HTML代码更具可读性,还需要增加一些新行和空格。正如我们已经介绍的,浏览器将忽略这些字符,但是这些字符对于阅读这段代码的人来说又非常重要。因此,必须经常查看这个HTML页面,确保页面输出就是你所希望的。
在程序清单1-3中,你会发现在一些字符串中出现了'/n'字符。当这个字符出现在一个引号的字符串中,它将被解释成一个换行字符。