PHP 数组遍历foreach语法结构及实例


Posted in PHP onJune 13, 2016

foreach()

PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。

语法:

foreach (array as $value)
  statement
// 或者:
foreach (array as $key => $value)

statement

上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。

例子:

<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
  echo $age,'<br />';
}
?>

运行该例子输出:

18
20
25

使用数组键值

<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $key=>$age) {
  echo $key,': ',$age,'<br />';
}
?>

运行例子输出:

wang: 18
li: 20
zhang: 25

当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,这意味着不需要在 foreach 循环之前调用 reset()。

foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。对返回的数组单元的修改也不会影响原数组(见下面例子),但 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。

<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
  $age = $age+10;
  echo $age,'<br />';
}
// 输出原数组
print_r($arr_age);
?>

运行例子输出:

28
30
35
Array ( [wang] => 18 [li] => 20 [zhang] => 25 )

要在 foreach 中修改原数组元素,可以通过引用来实现,将上面的例子更改为:

<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as &$age) {
  $age = $age+10;
  echo $age,'<br />';
}
// 输出原数组
print_r($arr_age);
?>

运行例子输出:

18
20
25

Array ( [wang] => 28 [li] => 30 [zhang] => 35 )

遍历多维数组

foreach 语法结构只能用于遍历一维数组,要遍历多维数组,一般是将 foreach 嵌套递归使用或者将原数组分割为一维数组再进行 foreach 遍历。

一二维数组混合的例子:

<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小张", "age"=>25));
foreach ($arr_age as $age) {
  if(is_array($age)){
    foreach ( $age as $detail) {
    echo $detail,'<br />';
    }
  } else {
    echo $age,'<br />';
  }
}
?>

对多维数组的遍历处理就要根据实际的数据结构而采取最合适的处理方式。

PHP 数组是通过哈希表(HashTable)表实现的,因此 foreach 遍历数组时是依据元素添加的先后顺序来进行的。如果想按照索引大小遍历,应该使用 for() 循环遍历。

for() 循环遍历数组

如果是操作连续键值的数组,也可以采用 for() 循环来遍历数组:

<?php
$arr_age = array(18, 20, 25);
$num = count($arr_age);
for($i = 0; $i < $num; $i++){
  echo $arr_age[$i]."<br />";
}
?>

也可以用 list() 和 each() 结合来遍历数组,但测试发现效率不如 foreach() 。

以上这篇PHP 数组遍历foreach语法结构及实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
phpMyAdmin 安装及问题总结
May 28 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
浅析SVN常见问题及解决方法
Jun 21 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
php文件上传类的分享
Jul 06 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 #PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 #PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 #PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 #PHP
PHP 数组基本操作小结(推荐)
Jun 13 #PHP
PHP中header函数的用法及其注意事项详解
Jun 13 #PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 #PHP
You might like
PHP树-不需要递归的实现方法
2016/06/21 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python无损音乐搜索引擎实现代码
2018/02/02 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
python使用thrift教程的方法示例
2019/03/21 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
python tkinter基本属性详解
2019/09/16 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
Python实现一个论文下载器的过程
2021/01/18 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
别名指示符是什么
2012/10/08 面试题
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
2014年清明节寄语
2014/04/03 职场文书
房屋转让协议书
2014/04/11 职场文书
小学课外阅读总结
2014/07/09 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
上课说话检讨书
2015/01/27 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书