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 相关文章推荐
PHP 的 __FILE__ 常量
Jan 15 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
PHP中判断变量为空的几种方法小结
Nov 12 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
PHP的邮件群发系统phplist配置方法详细总结
Mar 30 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
php源码的使用方法讲解
Sep 26 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 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 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
表单提交验证类
2006/07/14 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
javascript特殊文本输入框网页特效
2016/09/13 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
js 图片转base64的方式(两种)
2018/04/24 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
python 计算文件的md5值实例
2017/01/13 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
python 中如何获取列表的索引
2019/07/02 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
房产分割协议书范文
2014/11/21 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
文书工作总结(范文)
2019/07/11 职场文书
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL