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+MySQL搭建聊天室功能实例代码
Aug 20 PHP
php的数组与字符串的转换函数整理汇总
Jul 18 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
PHP开发Apache服务器配置
Jul 15 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
PHPCMS2008广告模板SQL注入漏洞修复
Oct 11 PHP
PHP从二维数组得到N层分类树的实现代码
Oct 11 PHP
PHP创建多级目录的两种方法
Oct 28 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
php定期拉取数据对比方法实例
Sep 22 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基础陷阱题(变量赋值)
2012/09/12 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php简单复制文件的方法
2016/05/09 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
PHP7 list() 函数修改
2021/03/09 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
Node.JS如何实现JWT原理
2020/09/18 Javascript
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
python创建学生成绩管理系统
2019/11/22 Python
python 回溯法模板详解
2020/02/26 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
四川成都导游欢迎词
2014/01/18 职场文书
部队万能检讨书
2014/02/20 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
mysql 索引合并的使用
2021/08/30 MySQL
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers