循环语句的作用就是在条件满足的情况下,可以执行多次相同或相似的任务,PHP中的循环语句包括for、while、do-while和foreach语句结构,下面分别介绍。
for语句
for语句结构一般用于执行确定循环次数的操作,其条件包括三个部分,如
for(<初始化循环控制变量>; <循环执行条件>; <控制变量的变化>)
{
<语句块>
}
如下面的代码,其功能是计算1到100的和。
$sum = 0;
for($i=1; $i<=100; $i++)
{
$sum += $i;
}
echo $sum; // 显示5050
下面的代码会计算1到100中偶数的和。
$sum = 0;
for($i=2; $i<=100; $i+=2)
{
$sum += $i;
}
echo $sum; // 显示2550
while语句
while语句结构会根据指定的条件来执行循环操作,其一般使用格式如下。
while(<条件>)
{
<语句块>
}
当<条件>满足时,会执行<语句块>,当<条件>不满足时会退出循环结构。如下面的代码,其功能是同样是计算1到100的和。
$sum = 0;
$i = 1;
while($i<=100)
{
$sum += $i;
$i++;
}
echo $sum; // 显示 5050
do-while语句
do-while语句结构与while语句结构的功能相似,只不过判断的条件放在了循环操作的后面,也就是说do-while循环至少会执行一次。其基本应用格式如下。
do
{
<语句块>
}while(<条件>)
我们同样使用这个语句来完成1到100累加的计算,如下面的代码。
$sum = 0;
$i = 1;
do
{
$sum += $i;
$i++;
}while($i<=100);
echo $sum; // 显示 5050
使用do-while语句结构时应注意,由于循环最少会执行一次,所以,必须保证在第一次执行循环时不会出现异常,否则,还是使用while语句结构比较安全。
循环中的break和continue语句
在switch语句结构中,我们已经了解了一些break语句的作用,在那里,它的作用就是终止switch语句结构,而在循环语句中,无论是for、while,还是do-while语句结构,我们都可以使用break语句,它的作用就是终止当前的循环结构。
在循环语句结构中,另一个需要注意的是continue语句,它的作用是终止本次循环的执行,而继续执行下一次循环(如果条件为true的话)。如下面的代码,我们将使用continue语句来实现1到100中偶数的累加计算。
$sum = 0;
for($i=1; $i<=100; $i++)
{
if($i%2 != 0) continue;
$sum += $i;
}
echo '1到100中偶数的和是',$sum;
前面,我们看到的是break和continue语句最基本的应用,在多重循环中,我们还可以使用break和continue语句执行更精确地控制,其中有两种基本用法:
- break n或continue n。其中,n是一个整数,用于指示终止第几层循环,而n为1时,其效果与单独使用break和continue语句的效果是一样的。
- break <变量>或continue <变量>。其中,<变量>是指循环控制变量,也就是指定break和continue语句终止的是哪一个控制变量所在的循环结构。
foreach
foreach语句又可以称为迭代语句结构,它并不是按条件来执行,而是逐一访问对象中的所有成员,我们可以在结构中对这些成员进行相同或相似的操作,如数组成员的访问,下面的代码将显示数组中每一个成员。
$arr = array(1,2,3);
foreach($arr as $value)
{
echo $value,'<br>';
}
代码显示结果如下图。
像数组这样可以使用foreach语句访问的对象,是一种叫作“迭代器”的结构实现的,在我们创建类型中,如果需要使用foreach语句访问,可以让其实现Iterator接口,这个接口的成员包括:
- rewind()方法,指向第一个成员。
- current()方法,返回当前成员。
- key()方法,当前成员的键(或索引)。
- next()方法,指向下一个成员,此操作前应使用valid()方法进行判断。
- valid()方法,返回bool类型,判断是否还有下一个成员。