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 20 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
Aug 06 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php中异常处理方法小结
Jan 09 PHP
php操作xml入门之cdata区段
Jan 23 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
简单实现PHP留言板功能
Dec 21 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
Apr 09 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
php提高脚本性能的4个技巧
Aug 18 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
python使用递归解决全排列数字示例
2014/02/11 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
汽车工程专业应届生求职信
2013/10/19 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
出纳岗位职责范本
2013/12/01 职场文书
关于抽烟的检讨书
2014/02/25 职场文书
百日安全生产活动总结
2014/07/05 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
千万级用户系统SQL调优实战分享
2022/03/03 MySQL
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫