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代码保护--Zend Guard的使用详解
Jun 03 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
php自定义错误处理用法实例
Mar 20 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
php实现Mysql简易操作类
Oct 11 PHP
session 加入redis的实现代码
Jul 15 PHP
php实用代码片段整理
Nov 12 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 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
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
用cssText批量修改样式
2009/08/29 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
python实现kMeans算法
2017/12/21 Python
Python中的集合介绍
2019/01/28 Python
Python3.5运算符操作实例详解
2019/04/25 Python
如何使用python传入不确定个数参数
2020/02/18 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
学生操行评语大全
2014/04/24 职场文书
安全月活动总结
2014/05/05 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
订货会邀请函
2015/01/31 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
国富论读书笔记
2015/06/26 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
《学会看病》教学反思
2016/02/17 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript