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全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
php从数组中随机抽取一些元素的代码
Nov 05 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
PHP如何将XML转成数组
Apr 04 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
php之可变变量的实例详解
Sep 12 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
phpstudy后门rce批量利用脚本的实现
Dec 12 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自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Python Django基础二之URL路由系统
2019/07/18 Python
python SocketServer源码深入解读
2019/09/17 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
Python 爬虫的原理
2020/07/30 Python
Python接口自动化测试的实现
2020/08/28 Python
python类共享变量操作
2020/09/03 Python
Django 实现图片上传和下载功能
2020/12/31 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
综合办公室个人的自我评价
2013/12/22 职场文书
房产继承公证书
2014/04/09 职场文书
护理专科学生自荐书
2014/07/05 职场文书
十佳党员事迹材料
2014/08/28 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
诉讼授权委托书
2014/10/15 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
汇报材料怎么写
2014/12/30 职场文书
技术支持岗位职责
2015/02/13 职场文书
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript