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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
php 文件状态缓存带来的问题
Dec 14 PHP
php获取服务器信息的实现代码
Feb 04 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
PHP网络操作函数汇总
May 18 PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 PHP
PHP批量删除jQuery操作
Jul 23 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 PHP
laravel中Redis队列监听中断的分析
Sep 14 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实现的简单网络硬盘
2015/07/29 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
Python 解析XML文件
2009/04/15 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
详解python中的 is 操作符
2017/12/26 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
python递归全排列实现方法
2018/08/18 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
企业务虚会发言材料
2014/10/20 职场文书
房产电话营销开场白
2015/05/29 职场文书
感动中国何玥观后感
2015/06/02 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
Python极值整数的边界探讨分析
2021/09/15 Python