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 相关文章推荐
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 PHP
php smarty函数扩展
Mar 15 PHP
php中获取指定IP的物理地址的代码(正则表达式)
Jun 23 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
php的mssql数据库连接类实例
Nov 28 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
php 常用的系统函数
Feb 07 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 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
基于mysql的bbs设计(一)
2006/10/09 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
javascript引用对象的方法
2007/01/11 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python导入txt数据到mysql的方法
2015/04/08 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
python表格存取的方法
2018/03/07 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
python实现学生通讯录管理系统
2021/02/25 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
护理人员的自我评价分享
2014/03/15 职场文书
慰问信模板
2015/02/14 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书