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系统流量分析的程序
Oct 09 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php Static关键字实用方法
Jun 04 PHP
PHP设计模式之代理模式的深入解析
Jun 13 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
使用图灵api创建微信聊天机器人
Jul 23 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
PHP图像裁剪缩略裁切类源码及使用方法
Jan 07 PHP
php封装的mysqli类完整实例
Oct 18 PHP
Laravel中的Auth模块详解
Aug 17 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 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使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
react的hooks的用法详解
2020/10/12 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
Python实现计算最小编辑距离
2016/03/17 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
中学教师师德承诺书
2014/05/23 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
中秋客户感谢信
2015/01/22 职场文书
毕业生学校组织意见
2015/06/04 职场文书
MySQL基础(一)
2021/04/05 MySQL
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
React Fragment介绍与使用详解
2021/11/11 Javascript