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文件上传主要代码讲解
Sep 30 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
PHP面试题之文件目录操作
Oct 15 PHP
php面向对象编程self和static的区别
May 08 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
php提取微信账单的有效信息
Oct 01 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
yii2.0框架场景的简单使用示例
Jan 25 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
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
python实现给微信指定好友定时发送消息
2019/04/29 Python
python版DDOS攻击脚本
2019/06/12 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
铁路工务反思材料
2014/02/07 职场文书
教师先进个人材料
2014/12/17 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
python如何进行基准测试
2021/04/26 Python
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
Python中requests库的用法详解
2022/06/05 Python