PHP数组遍历的几种常见方式总结


Posted in PHP onFebruary 15, 2019

本文实例讲述了PHP数组遍历的几种常见方式。分享给大家供大家参考,具体如下:

1、使用for循环遍历数组

conut($arr);用于统计数组元素的个数。
for循环只能用于遍历,纯索引数组!!!!
如果存在关联数组,count统计时会统计两种数组的总个数,使用for循环遍历混合数组,导致数组越界!!

eg:

$arr = array(1,2,3,5,6,7);
$num = count($arr); //count最好放到for外面,可以让函数只执行一次
echo "数组元素的个数{$num}<br/>";
for($i=0;$i<$num;$i++){
 echo "{$i}==>{$arr[$i]}<br/>";
}

2、forEach循环遍历数组

foreach可以遍历任何类型的数组!!!

eg:

$arr = array(1,2,3,"one"=>4,5,6,7);
foreach($arr as $value){
 echo "{$item}<br>";
}
foreach($arr as $key => $value){
 echo "{$key}==>{$item}<br>";
}

举个例子解析如下数组:

$h51701 = array(
 "group1"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 ),
 "group2"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 ),
 "group3"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 )
);
foreach ($h51701 as $key => $value) {
 echo "{$key}<br><br>";
 foreach ($value as $key1 => $value1) {
  echo "第".($key1+1)."个同学<br>";
  foreach ($value1 as $key2 => $value2) {
  echo "{$key2}==>{$value2}<br>";
  }
  echo "<br>";
 }
 echo "------------------------<br>";
}

使用list()、each()、while()遍历数组

(重点)list():用于将数组的每一个值,赋值给list函数的每一个参数。(list函数的参数,必须小于等于数组的元素个数);

eg:list($a,$b,$c)=[1,2,3];-->$a=1; $b=2; $c=3;

注意:
list()在解析数组时,只解析索引数组;
② list可以通过空参数,选择性的解析数组的值;

list($a,,$b)=[1,2,3];-->$a=1;  $b=3;

(重点)each():用于返回数组当前指针所在位的键值对!并将指针后移一位;

返回值:如果指针有下一位,返回一个数组。包含一个索引数组(0-键,1-值)和一个关联数组("key"-键,"value"-值);如果指针没有下一位,返回false;

eg:

each($arr) 返回数组或false;
② 把数组或false赋值给$a;
③ while判断$a如果是数组,继续执行下一次;

如果$a是false,终止循环

while($a = each($arr)){
 echo "{$a[0]}-->{$a[1]}<br>";
 echo "{$a['key']}-->{$a['value']}<br>";
}

3.使用list()/each()/while()配合遍历数组

while(list($key,$value) = each($arr)){
  echo "{$key}-->{$value}<br>";
}
reset($arr);

!!!!数组使用each()遍历完一遍后,指针使用处于最后一位的下一位;即再用each(),始终返回false;

如果还需使用,需用reset($arr);函数,重置数组指针;

eg:

$arr = array(1,2,3,"one"=>4,5,6,7);
foreach($arr as $value){
 echo "{$item}<br>";
}
foreach($arr as $key => $value){
 echo "{$key}==>{$item}<br>";
}
while(true){
  $a = each($arr);
 if($a){
  echo "{$a[0]}-->{$a[1]}<br>";
  echo "{$a['key']}-->{$a['value']}<br>";
 }else{
  break;
 }
}
while(list($key,$value) = each($arr)){
 echo "{$key}-->{$value}<br>";
}
reset($arr);
while(list($key,$value) = each($arr)){
 echo "{$key}-->{$value}<br>";
}

4、 使用数组指针遍历数组

next:将数组指针,后移一位。并返回后一位的值;没有返回false
prev:将数组指针,前移一位。并返回前一位的值;没有返回false
end:  将数组指针,移至最后一位,返回最后一位的值;空数组返回false
reset:将数组指针,恢复到第一位。并返回第一位的值;空数组返回false
key: 返回当前指针所在位的键;
current:返回当前指针所在位的值;

$arr = [1,2,3,4,"one"=>5];
while(true){
  echo key($arr);
  echo "--";
  echo current($arr);
 echo "<br>";
 if(!next($arr)){
  break;
  }
}
reset($arr);

第二种方式:

do{
  echo key($arr);
  echo "--";
  echo current($arr);
 echo "<br>";
}while(next($arr));
reset($arr);

牛刀小试:

1.遍历数组:

$subject1 = array("Linux","PHP","MySQL","HTML","CSS","JQuery")

方式一:for循环遍历

for($i=0;$i<count($subject1);$i++){
   echo $subject1[$i]."<br/>";
}

方式二:使用list()/each()/while()配合遍历数组

方式一.

while(list($key,$value)=each($subject1)){
 echo "{$key}-->{$value}<br/>";
}

方式二.

while($a=each($subject1)){
 echo $a[0]."=>".$a[1]."<br/>";
}

方式三:forEach循环遍历

foreach ($subject1 as $key => $value) {
  echo "{$key}-->{$value}<br/>";
}

方式四:指针

do{
  echo key($subject1)."=>".current($subject1)."<br/>";
}while(next($subject1));
echo "<br/>";

2.使用reset(),end(),prev(),next(),key(),current();与do…while组合倒着输出数组中的值:

$subject2 = array("Linux","PHP","MySQL","HTML","CSS","JQuery")
$subject2 = array("Linux","PHP","MySQL","HTML","CSS","JQuery");
end($subject2);
do{
  echo key($subject2)."=>".current($subject2)."<br>";
}while(prev($subject2));

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 分页函数multi() discuz
Jun 21 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
浅析PHP绘图技术
Jul 03 PHP
如何使用php输出时间格式
Aug 31 PHP
php数据库备份还原类分享
Mar 20 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 PHP
PHP验证信用卡卡号是否正确函数
May 27 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 PHP
php curl获取到json对象并转成数组array的方法
May 31 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
PHP实现的AES 128位加密算法示例
Sep 16 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 #PHP
PHP crypt()函数的用法讲解
Feb 15 #PHP
phpinfo无法显示的原因及解决办法
Feb 15 #PHP
实例介绍PHP中zip_open()函数用法
Feb 15 #PHP
PHP echo()函数讲解
Feb 15 #PHP
PHP crc32()函数讲解
Feb 14 #PHP
PHP count_chars()函数讲解
Feb 14 #PHP
You might like
php生成PDF格式文件并且加密
2015/06/22 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
jQuery 表格工具集
2010/04/25 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python中用于返回绝对值的abs()方法
2015/05/14 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python实现元素等待代码实例
2019/11/11 Python
python实现视频读取和转化图片
2019/12/10 Python
简单了解如何封装自己的Python包
2020/07/08 Python
Nike瑞士官网:Nike CH
2021/01/18 全球购物
欢迎新生标语
2014/10/06 职场文书
结婚保证书
2015/01/16 职场文书
业务员岗位职责范本
2015/04/03 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
前端JavaScript大管家 package.json
2021/11/02 Javascript
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis