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 相关文章推荐
多数据表共用一个页的新闻发布
Oct 09 PHP
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
PHP生成UTF8文件的方法
May 15 PHP
php中Smarty模板初体验
Aug 08 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP 8新特性简介
Aug 18 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 生成WML页面方法详解
2009/08/09 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
Promise扫盲贴
2019/06/24 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
python 装饰器功能以及函数参数使用介绍
2012/01/27 Python
python3.6数独问题的解决
2019/01/21 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
tensorflow 变长序列存储实例
2020/01/20 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
Python使用openpyxl复制整张sheet
2021/03/24 Python
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
工程专业毕业生自荐信范文
2013/12/25 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
高中生操行评语大全
2014/04/25 职场文书
元旦主持词开场白
2015/05/29 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
小学语文教师研修日志
2015/11/13 职场文书
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技