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 相关文章推荐
加强版phplib的DB类
Mar 31 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
PHP面向对象——访问修饰符介绍
Nov 08 PHP
php strnatcmp()函数的用法总结
Nov 27 PHP
php给每个段落添加空格的方法
Mar 20 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
基于PHP实现生成随机水印图片
Dec 09 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
PHP实现搜索相似图片
2015/09/22 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
常用的js方法合集
2017/03/10 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
python列表返回重复数据的下标
2020/02/10 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
描述内存分配方式以及它们的区别
2016/10/15 面试题
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
jQuery treeview树形结构应用
2021/03/24 jQuery
报关简历自我评价怎么写
2013/09/19 职场文书
记帐员岗位责任制
2014/02/08 职场文书
爱护公物演讲稿
2014/09/09 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
css3 选择器
2022/05/11 HTML / CSS