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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
php上的memcache和memcached两个pecl库
Mar 29 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
php中mysql模块部分功能的简单封装
Sep 30 PHP
浅析SVN常见问题及解决方法
Jun 21 PHP
PHP图片裁剪函数(保持图像不变形)
May 04 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
php格式化电话号码的方法
Apr 24 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
详解Laravel服务容器的绑定与解析
Nov 05 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
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
轻松实现php文件上传功能
2017/02/17 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
JsDom 编程小结
2011/08/09 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python实现的堆排序算法示例
2018/04/29 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
explicit和implicit的含义
2012/11/15 面试题
大学生专科学习生活的自我评价
2013/12/07 职场文书
高三自我评价
2014/02/01 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
党员创先争优活动总结
2014/05/04 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书