PHP遍历数组的几种方法


Posted in PHP onMarch 22, 2012

PHP中遍历数组有三种常用的方法:
一、使用for语句循环遍历数组;
二、使用foreach语句遍历数组;
三、联合使用list()、each()和while循环遍历数组。
这三种方法中效率最高的是使用foreach语句遍历数组。从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用。先分别介绍这几种方法。

一、使用for语句循环遍历数组
值得大家注意的是使用for语句循环遍历数组要求遍历的数组必须是索引数组。PHP中不仅有关联数组而且还有索引数组,所以PHP中很少用for语句循环遍历数组。
实例代码如下:

<?php 
$arr = array('https://3water.com','三水点靠木','PHP教程'); 
$num = count($arr); 
for($i=0;$i<$num;++$i){ 
echo $arr[$i].'<br />'; 
} 
?>

注释:上例代码中我们先计算出数组$arr中元素的个数,然后才使用在for语句,这样做很高效的。因为如果是for($i=0;$i< count($arr);++$i)的话,每次循环都会计算数组$arr中元素的个数,而使用上面的方式可以减去这种开销。使用++$i也是为了提高效率,前面有文章我们提到过,建议大家再看看。
上面代码的输出结果为:
https://3water.com
三水点靠木
PHP教程

二、使用foreach语句遍历数组
使用foreach语句循环遍历数组有二种方式,我们使用的最多的还是第一种方式。介绍如下:
第一种方式:
foreach(array_expression as $value){
//循环体
}
实例代码:

<?php 
$arr = array('https://3water.com','三水点靠木','PHP教程'); 
foreach($arr as $value){ 
echo $value.'<br />'; 
} 
?>

每次循环中,当前元素的值被赋给变量$value,并且把数组内部的指针向后移动一步。所以下一次循环中会得到数组的下一个元素,直到数组的结尾才停止循环,结束数组的遍历。

第二种方式:
foreach(array_expression as $key=>$value){
//循环体
}
实例代码:

<?php 
//定义数组 
$arr = array('https://3water.com','三水点靠木','PHP教程'); 
foreach($arr as $k=>$v){ 
echo $k."=>".$v."<br />"; 
} 
?>

三、联合使用list()、each()和while循环遍历数组
each()函数需要传递一个数组作为一个参数,返回数组中当前元素的键/值对,并向后移动数组指针到下一个元素的位置。
list()函数,这不是一个真正的函数,是PHP的一个语言结构。list()用一步操作给一组变量进行赋值。

实例代码:

<?php 
//定义循环的数组 
$arr = array('website'=>'https://3water.com','webname'=>'三水点靠木') 
while(list($k,$v) = each($arr)){ 
echo $k.'=>'.$v.'<br />'; 
} 
?> 3water.com

输出结果为:
website=>https://3water.com
webname=>PHP程序员

总结:上述三种循环遍历数组的方法中建议大家使用foreach语句循环遍历数组,效率更高。

PHP 相关文章推荐
初级的用php写的采集程序
Mar 16 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
php获取目标函数执行时间示例
Mar 04 PHP
3种php生成唯一id的方法
Nov 23 PHP
PHP异常处理Exception类
Dec 11 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 PHP
php遍历数组的方法分享
Mar 22 #PHP
php中大括号作用介绍
Mar 22 #PHP
那些年一起学习的PHP(三)
Mar 22 #PHP
那些年一起学习的PHP(二)
Mar 21 #PHP
那些年一起学习的PHP(一)
Mar 21 #PHP
ecshop 批量上传(加入自定义属性)
Mar 20 #PHP
批量去除PHP文件中bom的PHP代码
Mar 13 #PHP
You might like
php $_SERVER当前完整url的写法
2009/11/12 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
PHP反射实际应用示例
2019/04/03 PHP
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
关于Django外键赋值问题详解
2017/08/13 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
人力资源部培训专员岗位职责
2014/01/02 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js