日期:2011-04-11  浏览次数:20441 次


WHILE
    WHILE循环是PHP3中循环的一个简单例子。它和在C中的表现完全一样,WHILE语句基本的结构如下所示:

    WHILE(expr) statement

 

    WHILE语句的的含义是十分简单的。它告诉PHP在WHILE表达式为真的情况下反复的执行嵌套的语句。表达式的值在每一次循环开始的时候被检查,所以即使这个值在执行嵌套的语句时被更改了,执行过程将不会被终止,直到结束该次循环为止。有些情况下,WHILE表达式的值在开始就是假,那么这些嵌套的语句将一次也不会被执行。

    和使用IF语句类似,您可以在同一个WHILE循环中使用多个语句作为一个组,使用{ }或类似于下文的语法:

    WHILE(expr): statement ... ENDWHILE;

    在下面的两个例子实现的功能是相同的,即打印了从1到10的所有数字:

 

    /* example 1 */

$i = 1;while ($i <= 10) {

print $i++; /* the printed value would be

$i before the increment

(post-increment) */

}

 

/*example 2 */

$i = 1;

while ($i <= 10):

print $i;

$i++;

endwhile;

 

DO..WHILE
    DO..WHILE循环和WHILE循环是十分类似的,除了真值检查是在每个循环过程最后进行的外。这里最主要的不同就是对于DO..WHILE循环,它和标准的WHILE循环不一样,它的第一个循环过程总是会被执行的(由于真值检查是在最后被执行的)。标准的WHILE循环中的第一个语句不一定被执行(由于真值检查是在循环开始时进行的)。

 

    这儿是使用DO..WHILE循环语句的一个例子:

$i = 0;

do {

print $i;

} while ($i>0);

 

    上文的循环仅仅会被执行一次,在第一次循环执行完毕之后,检查表达式为假($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);

 

    如果您对这些都不是很明白的话,也不必担心。您可以在不使用这些特性的情况下编写出很强有力的代码。

 

FOR
    在PHP中FOR循环是最复杂的循环。它的特性和它在C语言中的表现类似。FOR循环的语法如下:

 

    FOR (expr1; expr2; expr3) statement

 

    第一个表达式expr1将在循环开始时无条件的被求解执行;

    在每一个循环开始的时候,第二个表达式将被执行。如果它的值为真,则该循环将继续下面嵌套语句的执行。如果它的值为假,则循环结束;

    在每个循环的最后第三个表达式将被执行。

    任何一个表达式都可以是空的,当表达式二(expr2)是空的时候,意味这这个循环运行的次数将是不确定的(PHP和C一样默认该表达式为真)。这种做法并不象您想象的那样没有用,因为在有些情况下您可能希望使用带条件的BREAK语句来取代FOR的真值判断来作为终止循环的方法。

 

    注意下面的几个例子,所有的这些语句显示了从1到10的数字:

 

/* example 1 */

for ($i = 1; $i <= 10; $i++) {

print $i;

}

 

/* example 2 */

for ($i = 1;;$i++) {

if ($i > 10) {

break;

}

print $i;

}

 

/* example 3 */

$i = 1;for (;;) {

if ($i > 10)

{ break;

}

print $i;

$i++;

}

 

/* example 4 */

for ($i = 1; $i <= 10; print $i, $i++) ;

 

    当然,看上去第一个例子最好(或者是第四个例子),但是您将发现在许多场合使用空表达式的FOR循环是十分方便的。

 

    在FOR循环中PHP也支持交互的“冒号语法”。例如:

    FOR (expr1; expr2; expr3): statement; ...; endfor;