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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
浅析is_writable的php实现
Jun 18 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
php日期操作技巧小结
Jun 25 PHP
微信支付的开发流程详解
Sep 13 PHP
php多线程并发实现方法
Sep 30 PHP
php微信开发之谷歌测距
Jun 14 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 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 COOKIE设置为浏览器进程
2009/06/21 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
javascript实现表单验证
2016/01/29 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
python定时执行指定函数的方法
2015/05/27 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
python正则表达式面试题解答
2020/04/28 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Python实现括号匹配方法详解
2020/02/10 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
2015年元旦活动总结
2014/05/09 职场文书
放弃继承权公证书
2015/01/23 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript