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 相关文章推荐
phpfans留言版用到的install.php
Jan 04 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
PHP教程 基本语法
Oct 23 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
Jan 14 PHP
php中的filesystem文件系统函数介绍及使用示例
Feb 13 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
thinkPHP3.2.2框架行为扩展及demo示例
Jun 19 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 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遍历数组的方法汇总分析
2013/06/08 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
php构造函数与析构函数
2016/04/23 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
javascript this详细介绍
2016/09/19 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
深入浅析python 中的匿名函数
2018/05/21 Python
Atom的python插件和常用插件说明
2018/07/08 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
快速查找Python安装路径方法
2020/02/06 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
Weblogic和WebSphere不同特点
2012/05/09 面试题
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
精神文明单位申报材料
2014/05/02 职场文书
详解如何用Python实现感知器算法
2021/06/18 Python
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android