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缓存技术介绍
Nov 25 PHP
PHPMailer 中文使用说明小结
Jan 22 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
PHP常用的缓存技术汇总
May 05 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
php arsort 数组降序排序详细介绍
Nov 17 PHP
PHP 中常量的知识整理
Apr 14 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 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操作符与控制结构代码
2011/12/30 PHP
PHP取进制余数函数代码
2012/01/19 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
php中this关键字用法分析
2016/12/07 PHP
jQuery动画animate方法使用介绍
2013/05/06 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
python学习数据结构实例代码
2015/05/11 Python
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
电大自我鉴定
2013/10/27 职场文书
公司清洁工岗位职责
2013/12/14 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
Python音乐爬虫完美绕过反爬
2021/08/30 Python
介绍一下28个JS常用数组方法
2022/05/06 Javascript