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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
PHP小教程之实现链表
Jun 09 PHP
深入理解PHP中的global
Aug 19 PHP
php中动态修改ini配置
Oct 14 PHP
PHP Reflection API详解
May 12 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 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
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
降低PHP Redis内存占用
2017/03/23 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
Express之托管静态文件的方法
2018/06/01 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
python求质数的3种方法
2018/09/28 Python
Python List cmp()知识点总结
2019/02/18 Python
详解python中init方法和随机数方法
2019/03/13 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
python上selenium的弹框操作实现
2020/07/13 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
春节请假条
2014/04/11 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书