Discuz教程网

PHP for 循环语句使用方法详细说明

[复制链接]
authicon dly 发表于 2011-9-5 16:39:00 | 显示全部楼层 |阅读模式
for循环只是一个多一点的代码,同时循环添加到它。而所涉及的一个循环的共同任务是:

设置一些计数器变量的初始值。
请检查条件语句是正确的。
执行中的代码循环。
增量在每个迭代结束通过循环计数器。
for循环允许你定义一个简单的代码行这些步骤。它似乎有一种奇怪的形式,所以一定要密切注意语法用!

for 循环的语法是:

for (expr1; expr2; expr3)
statement

第一个表达式(expr1)在循环开始前无条件求值一次。

expr2 在每次循环开始前求值。如果值为 TRUE,则继续循环,执行嵌套的循环语句。如果值为 FALSE,则终止循环。

expr3 在每次循环之后被求值(执行)。

每个表达式都可以为空或包括逗号分隔的多个表达式。表达式 expr2 中,所有用逗号分隔的表达式都会计算,但只取最后一个结果。expr2 为空意味着将无限循环下去(和 C 一样,PHP 认为其值为 TRUE)。这可能不像想象中那样没有用,因为经常会希望用 break 语句来结束循环而不是用 for 的表达式真值判断。


看简单实例一
代码如下:

  1. FOR ($i = 0; $i <= 2; $i++)
  2. {
  3. print "value is now " . $i . "<br>";
  4. }
复制代码



输出值

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不去执行循环,不执行打印语句。

实例二
代码如下:

  1. $brush_price = 5;

  2. echo "<table border="1" align="center">";
  3. echo "<tr><th>Quantity</th>";
  4. echo "<th>Price</th></tr>";
  5. for ( $counter = 10; $counter <= 100; $counter += 10) {
  6. echo "<tr><td>";
  7. echo $counter;
  8. echo "</td><td>";
  9. echo $brush_price * $counter;
  10. echo "</td></tr>";
  11. }
  12. 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:
代码如下:

  1. <?php
  2. /* example 1 */

  3. for ($i = 1; $i <= 10; $i++) {
  4. echo $i;
  5. }

  6. /* example 2 */

  7. for ($i = 1; ; $i++) {
  8. if ($i > 10) {
  9. break;
  10. }
  11. echo $i;
  12. }

  13. /* example 3 */

  14. $i = 1;
  15. for (;;) {
  16. if ($i > 10) {
  17. break;
  18. }
  19. echo $i;
  20. $i++;
  21. }

  22. /* example 4 */

  23. for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
  24. ?>
复制代码




当然,第一个例子看上去最正常(或者第四个),但用户可能会发现在 for 循环中用空的表达式在很多场合下会很方便。

PHP 也支持用冒号的 for 循环的替代语法。
代码如下:

  1. for (expr1; expr2; expr3):
  2. statement;
  3. ...
  4. endfor;
复制代码




我们经常需要对下面这样的数组进行遍历:

代码如下:

  1. <?php
  2. /*
  3. * 我们想要在遍历的过程中改变以下数组中某些元素的值
  4. */
  5. $people = Array(
  6. Array('name' => 'Kalle', 'salt' => 856412),
  7. Array('name' => 'Pierre', 'salt' => 215863)
  8. );

  9. for($i = 0; $i < sizeof($people); ++$i)
  10. {
  11. $people[$i]['salt'] = rand(000000, 999999);
  12. }
  13. ?>
复制代码




以上代码的问题,在于for的第二个表达式会导致代码执行很慢--因为每次循环时都要 计算一遍数组的长度。由于数组的长度始终不变,我们可以用一个中间变量来存储数组长度, 然后用这个变量作为for循环的第二个表达式。这样在循环的时候就可以直接使用该变量的值, 不用每次重新计算。 如下:

代码如下:

  1. <?php
  2. $people = Array(
  3. Array('name' => 'Kalle', 'salt' => 856412),
  4. Array('name' => 'Pierre', 'salt' => 215863)
  5. );

  6. for($i = 0, $size = sizeof($people); $i < $size; ++$i)
  7. {
  8. $people[$i]['salt'] = rand(000000, 999999);
  9. }
  10. ?>
复制代码








上一篇:PHP 函数使用方法与函数定义方法
下一篇:PHP is_file 判断给定文件名是否为一个正常的文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-3 09:27

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表