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下intval()和(int)转换使用与区别
Jul 18 PHP
php 无法载入mysql扩展
Mar 12 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
Jun 24 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
php获取访问者浏览页面的浏览器类型
Jan 23 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP迭代器接口Iterator用法分析
Dec 28 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
PHP实现的多进程控制demo示例
Jul 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中函数的形参与实参的问题说明
2010/09/01 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
php技巧小结【推荐】
2017/01/19 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
Jquery 扩展方法
2010/05/06 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
详细分析Python collections工具库
2020/07/16 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
法学函授自我鉴定
2014/02/06 职场文书
技能比赛获奖感言
2014/02/14 职场文书
行政专员的岗位职责
2014/03/10 职场文书
求职自荐信的格式
2014/04/07 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers