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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
兼容PHP5的PHP目录管理函数库
Jul 10 PHP
php 301转向实现代码
Sep 18 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 PHP
PHP5中使用DOM控制XML实现代码
May 07 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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自动更新新闻DIY
2006/10/09 PHP
php socket客户端及服务器端应用实例
2014/07/04 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
python爬虫爬取微博评论案例详解
2019/03/27 Python
python实现简单日期工具类
2019/04/24 Python
Python获取时间戳代码实例
2019/09/24 Python
python代码区分大小写吗
2020/06/17 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
在什么时候需要使用"常引用"
2015/12/31 面试题
施工班组长岗位职责
2014/01/05 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
水电施工员岗位职责
2015/04/11 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
利用js实现简单开关灯代码
2021/11/23 Javascript