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数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
PHP 一个随机字符串生成代码
May 26 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
Windows7下的php环境配置教程
Feb 28 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
深入讲解PHP Session及如何保持其不过期的方法
Aug 18 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
php把文件设置为插件的技巧方法
Feb 03 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实现微信小程序客服消息功能
2019/08/12 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
python字典的常用方法总结
2019/07/31 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
指针和引用有什么区别
2013/01/13 面试题
称象教学反思
2014/02/03 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书