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 相关文章推荐
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
关于php正则匹配汉字的方法介绍
Apr 25 PHP
php实现邮件发送并带有附件
Jan 24 PHP
PHP date函数常用时间处理方法
May 11 PHP
项目中应用Redis+Php的场景
May 22 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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 闭包特性在实际应用中的问题
2009/10/30 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
element中的$confirm的使用
2020/04/26 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Python实现的质因式分解算法示例
2018/05/03 Python
python实现机器学习之多元线性回归
2018/09/06 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
诚信承诺书范文
2014/03/27 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
学雷锋日活动总结
2015/02/06 职场文书
活动宣传稿范文
2015/07/23 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers