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的无限分类实现想法~
Jan 02 PHP
PHP5 面向对象(学习记录)
Dec 02 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
php join函数应用
May 04 PHP
PHP源码之explode使用说明
Aug 05 PHP
Zend的MVC机制使用分析(二)
May 02 PHP
关于尾递归的使用详解
May 02 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
浅析PHP数据导出知识点
Feb 17 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
php回调函数处理数组操作示例
Apr 13 PHP
Yii 实现数据加密和解密
Mar 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生成静态页面详解
2006/12/05 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
2018/01/21 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
python操作xml文件详细介绍
2014/06/09 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
python类继承用法实例分析
2015/05/27 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
Jar包的作用是什么
2014/03/30 面试题
煤矿班组长的职责
2013/12/25 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
家长通知书教师评语
2014/04/17 职场文书
秋天的雨教学反思
2014/04/27 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
放弃继承权公证书
2015/01/23 职场文书
公司聚餐通知
2015/04/22 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
Python Socket编程详解
2021/04/25 Python
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript