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
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
Aug 07 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
php实现微信企业转账功能
Oct 02 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
Laravel如何实现自动加载类
Oct 14 PHP
php提高脚本性能的4个技巧
Aug 18 PHP
PHP sdk文档处理常用代码示例解析
Dec 09 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/07/16 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
浅谈Javascript实现继承的方法
2015/07/06 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
javascript字符串函数汇总
2015/12/06 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
Python的垃圾回收机制详解
2019/08/28 Python
pandas 空数据处理方法详解
2019/11/02 Python
python os.rename实例用法详解
2020/12/06 Python
Python实现粒子群算法的示例
2021/02/14 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
5.1手机促销活动
2014/01/17 职场文书
老公保证书范文
2014/04/29 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
导师工作推荐信
2015/03/27 职场文书
高三毕业感言
2015/07/30 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
Python预测分词的实现
2021/06/18 Python
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL
angular4实现带搜索的下拉框
2022/03/25 Javascript
Elasticsearch 配置详解
2022/04/19 Java/Android