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的ob_start();控制您的浏览器cache!
Feb 14 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php 进度条实现代码
Mar 10 PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
php连接mysql数据库
Mar 21 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
浅谈PHP进程管理
Mar 08 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
第三节 定义一个类 [3]
2006/10/09 PHP
用Flash图形化数据(二)
2006/10/09 PHP
一个高ai的分页函数和一个url函数
2006/10/09 PHP
使用 php4 加速 web 传输
2006/10/09 PHP
php继承的一个应用
2011/09/06 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
vue中的scope使用详解
2017/10/29 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
对python列表里的字典元素去重方法详解
2019/01/21 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
万年牢教学反思
2014/02/15 职场文书
运动会广播稿20字
2014/02/18 职场文书
2015年党风廉政建设工作总结
2015/04/09 职场文书
萤火虫之墓观后感
2015/06/05 职场文书