Practical PHP Programming

循环

在PHP中有四种循环方式,每种都用不同的方式进行循环,常用的有三种,但是你需要对四种都有所了解。

第一种循环方式被叫做while循环,可以视为一种特殊的if语句,只有当条件为假的时候才停止循环。用伪代码表示如下:

while(condition is true){
  do code
}

注意PHP是用代码块来表示循环范围的,用{开头,以}结束。

if语句一样,你需要提供一个条件来判断是否继续,但是要注意在循环过程中条件需要改变。看一下下面的代码:

<?php
  while(1 == 1){
    // do stuff
  }
?>

1是常量,而且永远和1是相等的,也就是说,由于条件一直为真,这个循环将永远进行下去,同时也将很快地消耗你的系统资源。即便如此,无限循环在某些情况下仍然是有用的,我们稍后讨论。

while循环通常用在我们不知道具体要循环多少次的情况当中,例如:

 <?php
    while(there are still rows to read from a database) {
        read in row;
        move to the next to row;
    }
?>

更常用的一种循环方式是for循环,比while循环稍微复杂一点。for循环有三部分:变量声明、循环条件和循环动作,一般使用一个变量来记录循环的次数。变量声明部分是用来声明记录循环次数的变量的,循环条件是用来检查循环变量是否满足条件的,循环动作是每次循环结束需要对循环变量执行的操作。

下面是一个for循环的例子:

 <?php
    for ($i = 1; $i < 10; $i = $i + 1) {
        print "Number $i\n";
    }
?>

如上所示,for循环有三个部分,用分号间隔。首先,我们将1赋值给变量$i,然后检查$i是不是小于10,当$i小于10的时候才会执行循环。最后,在每次循环结束的时候,$i都会被加上1。for循环就是由这三部分组成的。

上面这段代码的作用是从1数到10并输出。注意并没有输出Number 10,是因为要求$i小于10而不是等于10。下面是输出:

Number 1
Number 2
Number 3
Number 4
Number 5
Number 6
Number 7
Number 8
Number 9

代码当中的\n是用来输出换行的,如果是Windows系统的话,你应该用\r\n。以后会进行解释,现在无须担心。

第三种也是最不重要的一种循环方式是do - while循环。同while循环的唯一区别就是它至少会循环一次。看一下下面的代码:

 <?php
    $foo = 12;
    while ($foo < 10) {
        do_bar();
    }
?>

在这种情况下,do_bar()函数永远不会执行,因为$foo的初始值就大于10了。然而,如果换用do - while循环的话:

 <?php
    $foo = 12;
    do {
        do_bar();
    } while ($foo < 10);
?>

这样,在$foo同10进行比较大小之前,已经执行过一次do_bar()了;又由于条件不满足,do_bar()所在的循环将不会再次执行。do - whilewhile的区别就是前者会至少执行一次。

最后一种循环方式是foreach循环,主要用于数组数据的循环。由于数组的工作方式比较特别,这种循环方式也将放到数组一章中进行详细讲解。