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 和 MYSQL
Oct 09 PHP
怎样在UNIX系统下安装MySQL
Oct 09 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
如何在php中正确的使用json
Aug 06 PHP
php加密解密函数authcode的用法详细解析
Oct 28 PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 PHP
php制作文本式留言板
Mar 18 PHP
PHP实现的简单缓存类
Jul 29 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
Feb 01 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 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抽象类 介绍
2012/06/13 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
js 学习笔记(三)
2009/12/29 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python计算三角函数之asin()方法的使用
2015/05/15 Python
python删除过期log文件操作实例解析
2018/01/31 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Django 批量插入数据的实现方法
2020/01/12 Python
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
联想德国官网:Lenovo Germany
2018/07/04 全球购物
廉政教育心得体会
2014/01/01 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
入党申请自荐书范文
2014/02/11 职场文书
临床专业自荐信
2014/06/22 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python