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程序员工具
May 26 PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
PHP中require和include路径问题详解
Dec 25 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 PHP
Laravel修改验证提示信息为中文的示例
Oct 23 PHP
php接口隔离原则实例分析
Nov 11 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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防注入及开发安全详细解析
2013/08/09 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Python集合操作方法详解
2020/02/09 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Python request post上传文件常见要点
2020/11/20 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
linux面试题参考答案(6)
2014/08/29 面试题
企业文化演讲稿
2014/05/20 职场文书
停车位租赁协议书
2014/09/24 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
企业投资意向书
2015/05/09 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书