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数组应该有多大的分析
Jul 30 PHP
php笔记之:AOP的应用
Apr 24 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php格式化日期实例分析
2014/11/12 PHP
dedecms中使用php语句指南
2014/11/13 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
vue配置多代理服务接口地址操作
2020/09/08 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
python怎么判断素数
2020/07/01 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
python re模块和正则表达式
2021/03/24 Python
英文简历自荐信范文
2013/12/11 职场文书
儿子婚宴答谢词
2014/01/09 职场文书
保护环境建议书100字
2014/05/13 职场文书
主题班会演讲稿
2014/05/22 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书