php for 循环语句使用方法详细说明 |
本文标签:php,for,循环 for循环只是一个多一点的代码,同时循环添加到它 。而所涉及的一个循环的共同任务是: 设置一些计数器变量的初始值 。 请检查条件语句是正确的 。 执行中的代码循环 。 增量在每个迭代结束通过循环计数器 。 for循环允许你定义一个简单的代码行这些步骤 。它似乎有一种奇怪的形式,所以一定要密切注意语法用! for 循环的语法是: for (expr1; expr2; expr3) statement 第一个表达式(expr1)在循环开始前无条件求值一次 。 expr2 在每次循环开始前求值 。如果值为 TRUE,则继续循环,执行嵌套的循环语句 。如果值为 FALSE,则终止循环 。 expr3 在每次循环之后被求值(执行) 。 每个表达式都可以为空或包括逗号分隔的多个表达式 。表达式 expr2 中,所有用逗号分隔的表达式都会计算,但只取最后一个结果 。expr2 为空意味着将无限循环下去(和 C 一样,PHP 认为其值为 TRUE) 。这可能不像想象中那样没有用,因为经常会希望用 break 语句来结束循环而不是用 for 的表达式真值判断 。 看简单实例一 复制代码 代码如下: FOR ($i = 0; $i <= 2; $i++) { print "value is now " . $i . "<br>"; } 输出值 value is now 0 value is now 1 value is now 2 在第一循环,$i=0,这意味着表达,($i<= 2),为ture 。因此,打印语句执行时,$i得到加1,变成1 。 在第二循环,$ = 1,这意味着表达,($i<= 2),为ture 。因此,打印语句执行时,$i得到加1,变成2 。 在第三迭代,$i= 2,这意味着表达,($i<= 2),为ture 。因此,打印语句执行时,$i递增,成为1 3 。 在第四迭代,$i= 3,这意味着表达,($i<= 2),是假的 。因此,PHP不去执行循环,不执行打印语句 。 实例二 复制代码 代码如下: $brush_price = 5; echo "<table border="1" align="center">"; echo "<tr><th>Quantity</th>"; echo "<th>Price</th></tr>"; for ( $counter = 10; $counter <= 100; $counter += 10) { echo "<tr><td>"; echo $counter; echo "</td><td>"; echo $brush_price * $counter; echo "</td></tr>"; } echo "</table>"; 输出值 Quantity Price 10 50 20 100 30 150 40 200 50 250 60 300 70 350 80 400 90 450 100 500 可以参考以下的例子,它们都显示数字 1 到 10: 复制代码 代码如下: <?php /* example 1 */ for ($i = 1; $i <= 10; $i++) { echo $i; } /* example 2 */ for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } /* example 3 */ $i = 1; for (;;) { if ($i > 10) { break; } echo $i; $i++; } /* example 4 */ for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); ?> 当然,第一个例子看上去最正常(或者第四个),但用户可能会发现在 for 循环中用空的表达式在很多场合下会很方便 。 PHP 也支持用冒号的 for 循环的替代语法 。 复制代码 代码如下: for (expr1; expr2; expr3): statement; ... endfor; 我们经常需要对下面这样的数组进行遍历: 复制代码 代码如下: <?php /* * 我们想要在遍历的过程中改变以下数组中某些元素的值 */ $people = Array( Array(name => Kalle, salt => 856412), Array(name => Pierre, salt => 215863) ); for($i = 0; $i < sizeof($people); ++$i) { $people[$i][salt] = rand(000000, 999999); } ?> 以上代码的问题,在于for的第二个表达式会导致代码执行很慢--因为每次循环时都要 计算一遍数组的长度 。由于数组的长度始终不变,我们可以用一个中间变量来存储数组长度, 然后用这个变量作为for循环的第二个表达式 。这样在循环的时候就可以直接使用该变量的值, 不用每次重新计算 。 如下: 复制代码 代码如下: <?php $people = Array( Array(name => Kalle, salt => 856412), Array(name => Pierre, salt => 215863) ); for($i = 0, $size = sizeof($people); $i < $size; ++$i) { $people[$i][salt] = rand(000000, 999999); } ?> |