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

2015-01-24信息快讯网

for 循环是 PHP 中最复杂的循环结构。它的行为和 C 语言的相似。在PHP中使用的是执行相同的代码集的次数

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); 
} 
?> 
php XMLWriter类的简单示例代码(RSS输出)
简单的PHP缓存设计实现代码
php利用iframe实现无刷新文件上传功能的代码
php json_encode奇怪问题说明
PHP安全配置详细说明
Sorting Array Values in PHP(数组排序)
PHP MySQL应用中使用XOR运算加密算法分享
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
php中用foreach来操作数组的代码
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
ajax 的post方法实例(带循环)
php smarty 二级分类代码和模版循环例子
php学习之 循环结构实现代码
php smarty 二级分类代码和模版循环例子
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
用PHP的超级变量$_GET获取HTML表单(Form) 数据
php 输出双引号"与单引号'的方法
php 函数使用方法与函数定义方法
php 获取select下拉列表框的值
PHP foreach循环使用详解与实例代码
php 在文件指定行插入数据的代码
php将数据库导出成excel的方法
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
PHP中冒号、endif、endwhile、endfor使用介绍
Fatal error: Call to undefined function curl_init()解决方法
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Smarty Foreach 使用说明
PHP提取数据库内容中的图片地址并循环输出
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
php Smarty date_format [格式化时间日期]
©2014-2024 dbsqp.com