PHP foreach循环使用详解与实例代码


Posted in PHP onMay 08, 2010

foreach基本语法如下:
FOREACH ($array_variable as $value)
{
[code to execute]
}
or
FOREACH ($array_variable as $key => $value)
{
[code to execute]
}
在这两种情况下,多次[代码执行]将被处死是等于在$ array_variable数组元素的个数。
让我们来看一个例子。假设我们有下面的代码段:

$array1 = array(1,2,3,4,5); 
FOREACH ($array1 as $abc) 
{ 
print "new value is " . $abc*10 . "<br>"; 
}

输出结果
new value is 10
new value is 20
new value is 30
new value is 40
new value is 50
foreach循环以上经历了所有5个元素的数组$ array1,每次打印出一份声明中含有10倍的数组元素的值。
foreach作用是遍历当前数组的所有值出来并且赋给$var
官方给出的实例代码:
<?php 
/* foreach example 1: value only */ 
$a = array(1, 2, 3, 17); 
foreach ($a as $v) { 
echo "Current value of \$a: $v.\n"; 
} 
/* foreach example 2: value (with key printed for illustration) */ 
$a = array(1, 2, 3, 17); 
$i = 0; /* for illustrative purposes only */ 
foreach ($a as $v) { 
echo "\$a[$i] => $v.\n"; 
$i++; 
} 
/* foreach example 3: key and value */ 
$a = array( 
"one" => 1, 
"two" => 2, 
"three" => 3, 
"seventeen" => 17 
); 
foreach ($a as $k => $v) { 
echo "\$a[$k] => $v.\n"; 
} 
/* foreach example 4: multi-dimensional arrays */ 
$a = array(); 
$a[0][0] = "a"; 
$a[0][1] = "b"; 
$a[1][0] = "y"; 
$a[1][1] = "z"; 
foreach ($a as $v1) { 
foreach ($v1 as $v2) { 
echo "$v2\n"; 
} 
} 
/* foreach example 5: dynamic arrays */ 
foreach (array(1, 2, 3, 4, 5) as $v) { 
echo "$v\n"; 
} 
?>

再来看一个foreach 对多维数据操作实例
$s = array(array(1,2),array(3,4),array(5,6)); 
foreach( $s as $v => $_v ) 
{ 
foreach( $_v as $vc => $_vc ) 
{ 
echo $_vc[0],'|'.$_vc[1],'<br />'; 
//print_r($_vc); 
} 
}

先来看一下foreach的语法:
foreach ($array as $key=>$value) 
{ 
…… 
}

为了便于理解,我们假定这里的$array是一个一维的相关数组,$key是数组的索引,$value是这个索引的值,它们的名字可以随意,之所以叫$key和$value是为了便于理解。为了能让你更好的理解foreach的工作过程,我们来创建一个数组:
$array = array('first'=>'ibm','second'=>'hp');
现在我们模拟PHP服务用foreach对$array进行遍历:
foreach ($array as $key=>$value) 
{ 
echo $key.'=>'.$value; 
}

第一次循环,$key = 'first',$value = 'ibm',这个时候,实际foreach对$array执行了一个我们看不见的操作:next($array),将数组指针向前(这里的“向前”跟PHP手册相同,不是我们通常所理解的“向前”)移一。然后echo语句输出"first=>ibm"。
第二次循环,首先会判断数组$array的当前指针是否已经到了数组的末尾,如果是,结束循环,否则进入第二次循环。当然这样的判断在进入第一次循环的时候也会有,如果$array是一个空数组,那么就会直接执行循环下面的语句。此时,$key = 'second','value' = 'hp',next($array)后,输出"second=>hp"。然后进行判断,数组指针已经到达末尾,执行下面的语句。
到这里你应该对foreach循环有所了解了吧?还有一点需要的是,foreach每次只是传递一个值,而不是真的对数组元素进行操作。具体到上面的例子,如果你想在每个数组元素的后面加上 'company' 这个字符串,那么$value .= 'company'这样的操作是不行的,它并不会改变数组元素的值,这个时候你应该这样用:$array[$key] .= 'company';

更多可以参考:php foreach
php foreach、while性能比较
php 循环

PHP 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
PHP中的日期及时间
Nov 23 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
10个简化PHP开发的工具
Dec 25 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
PHP fclose函数用法总结
Feb 15 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
php 在文件指定行插入数据的代码
May 08 #PHP
php将数据库导出成excel的方法
May 07 #PHP
PHP 编写大型网站问题集
May 07 #PHP
PHP5中使用DOM控制XML实现代码
May 07 #PHP
PHP 金额数字转换成英文
May 06 #PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 #PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 #PHP
You might like
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
一些不错的js函数ajax
2008/08/20 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
python安装以及IDE的配置教程
2015/04/29 Python
python连接MySQL数据库实例分析
2015/05/12 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
Python高斯消除矩阵
2019/01/02 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
学生自我评语大全
2014/04/18 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL