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中的实现trim函数代码
Mar 19 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
Session保存到数据库的php类分享
Oct 24 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
php实现Mysql简易操作类
Oct 11 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 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/05/17 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
Js apply方法详解
2017/02/16 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
php register_shutdown_function函数详解
2017/07/23 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
Python open()文件处理使用介绍
2014/11/30 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
基于python监控程序是否关闭
2020/01/14 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
什么是设计模式
2012/06/17 面试题
巾帼文明岗申报材料
2014/05/01 职场文书
就业意向书
2014/07/29 职场文书
报效祖国演讲稿
2014/09/15 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
python之基数排序的实现
2021/07/26 Python
Python必备技巧之函数的使用详解
2022/04/04 Python