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 相关文章推荐
ZF等常用php框架中存在的问题
Jan 10 PHP
PHP学习之数组的定义和填充
Apr 17 PHP
php中大括号作用介绍
Mar 22 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
PHP实现多文件上传的方法
Jul 08 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
php中的抽象方法和抽象类
Feb 14 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
php对象工厂类完整示例
Aug 09 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
PHP实现单例模式建立数据库连接的方法分析
Feb 11 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中如何判断AJAX提交的数据
2012/02/05 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
详解react-redux插件入门
2018/04/19 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
python实现FTP服务器服务的方法
2017/04/11 Python
python文件名和文件路径操作实例
2017/09/29 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
is_file和file_exists效率比较
2021/03/14 PHP
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
本科毕业生自我鉴定
2013/11/02 职场文书
培训主管的职业生涯规划
2014/03/06 职场文书
初级党校心得体会
2014/09/11 职场文书
幸福终点站观后感
2015/06/04 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis