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


Posted in PHP onMay 09, 2010

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 相关文章推荐
PHP音乐采集(部分代码)
Feb 14 PHP
php disk_free_space 返回目录可用空间
May 10 PHP
php编写一个简单的路由类
Apr 13 PHP
解析php如何将日志写进syslog
Jun 28 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
PHP速成大法
Jan 30 PHP
详细解读PHP中接口的应用
Aug 12 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
CI框架简单分页类用法示例
Jun 06 PHP
php 函数使用方法与函数定义方法
May 09 #PHP
php 获取select下拉列表框的值
May 08 #PHP
PHP foreach循环使用详解与实例代码
May 08 #PHP
php 在文件指定行插入数据的代码
May 08 #PHP
php将数据库导出成excel的方法
May 07 #PHP
PHP 编写大型网站问题集
May 07 #PHP
PHP5中使用DOM控制XML实现代码
May 07 #PHP
You might like
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python入门学习指南分享
2018/04/11 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
python单例设计模式实现解析
2020/01/07 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
解决python 找不到module的问题
2020/02/12 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
python绘制雷达图实例讲解
2021/01/03 Python
高中毕业自我鉴定
2013/12/19 职场文书
超市营业员岗位职责
2013/12/20 职场文书
专升本个人自我评价
2013/12/22 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
会计岗位工作总结
2015/08/12 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python