DO..WHILE

DO..WHILE 非常类似于 WHILE 循环, 只是它在每次循环结束时检查表达式是否为真,而不是在循环开始时。 它和严格的WHILE循环的主要区别是DO..WHILE的第一次循环肯定要执行(真值表达式仅在循环结束时间检查), 而不必执行严格的WHILE循环(每次循环开始时就检查真值表达式, 如果在开始时就为FALSE, 循环会立即终止执行).

DO..WHILE循环只有一种形式:

$i = 0;
do {
    print $i;
} while ($i>0);

上面循环只执行一次, 因为第一次循环后,当检查真值表达式时, 它算出来是 FALSE ($i 不大于 0)循环执行终止。

老的 C 用户可能熟悉DO..WHILE循环的另一种用法:通过DO..WHILE(0)封装它们,并结合使用BREAK语句,可以在代码块中间结束执行。下面代码是个示范:

do {
    if ($i < 5) {
        print "i is not big enough";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        break;
    }
    print "i is ok";
    ...process i...
} while(0);

如果你不能马上或者全部的理解这种方法也不用担心。你完全可以编写出程序,甚至强大的程序都不用这种用法。