0

0

数组与数组遍历

php中文网

php中文网

发布时间:2016-08-22 10:14:22

|

1430人浏览过

|

来源于php中文网

原创

  断断续续地学习了php有一段时间了,总是不能很好地理解,如今把数组和遍历数组整理出来。

 

  从基础开始说起:

  php数组分为索引数组,和关系型数组

  索引数组就是下标从0,1,2,3,4...开始,而关系型数组则非,理解为带key的(key为键)

 

 开始写一个数组:

$userNane = array('陈云','罗鑫','袁修成');

 当然也可以这样写:

    $userNane[0] = '陈云';

    $userNane[1] = '罗鑫';

    $userNane[2] = '袁修成';

 

现在来遍历这个数组

for($i = 0;$i<2;$i++){
        echo $userNane[$i]; 
};
//or

for($i = 0;$i){
/**利用count()函数来遍历数组的元素个数**/ 
    echo $userNane[$i]."
";
};

 

此时如果数组的下标如果不是从0开始(非索引数组),那么单单只靠for循环和count()是没用的,此时我们的好朋友foreach()就来了。

 

foreach ($userNane as $key => $value) {
   echo $key.
'------'.$value."
";
}

$key代表键值(就=也就是类似于索引下标)$value代表键值(下标)的值,
$key与$value是可以随意更变名字的,只是约定俗成用这两个变量进行表示

 

除了foreach()外我们还有一个好朋友也可以来遍历数组,那就是each()

 

"UTF-8">
php
    $userNane['陈云'] = 19;

    $userNane['罗鑫'] = 21;

    $userNane[''] = 11;

    $a=each($userNane);     //指针下移
    echo $a["key"].'----'.$a["value"].'
'; $a=each($userNane); echo $a["key"].'----'.$a["value"].'
'; $a=each($userNane); echo $a["key"].'----'.$a["value"].'
'; /*while (!!$a=each($userNane)) { //根据while循环判断,条件内为真则继续执行循环体,为假则退出循环,两个!!将数组转化为布尔值,存在则代表 1 echo $a["key"].'----'.$a["value"].'
'; }
*/ //each()函数返回的是一个数组 //each后所在数组的“每一个”键值会被重新包装成一个新的数组,里面有四条数据,key and value,0 and 1 //each完一次后指针下移一位,默认开始是第一位,也就是指向数组的第二条键值对,第二条键值对被重新包装秤数组 ?>

 

关于each()介绍看注释就明白了,each()完数组,数组里的每一个元素(键值对)都会被重新包装成一个新的数组,里面有四条数据。

但是这样的遍历太麻烦了,又相当的low..

此时each()的好朋友list()登场啦,首先介绍一下list():

$userNane = array(1,2,3);

    list($a,$b,$c) = $userNane;

    echo $a;  //1

为什么打印出1呢,

是这样子的,list()函数将数组中的赋给一些变量,对应着(按照数组循序)把$userNane数组里的元素分别赋值给$a,$b,$c

 

此时理解了list(),配上它的好朋友each()就能很便捷地遍历数组了

$userNane['陈云'] = 19;

$userNane['罗鑫'] = 21;

$userNane[''] = 11;

list($name,$age) = each($userNane);

    echo $name;  //陈云
    echo $age;  //19


list($name,$age) = each($userNane);


  echo $name; //罗鑫
  echo $age; //21

Notion AI
Notion AI

Notion是一款集成了笔记、知识库、数据表格、看板、日历等多种能力于一体的应用程序,它既可供个人使用,也可以与他人进行跨平台协作。

下载
 

 

因为each完后的数组里的元素被重新包装成一个新的数组,每个新的数组有四条数据,

此时每个数据有两个对应的key and value,此时key,value不能用,但是 0 和 1 就派上用场了,

借用它把$userNane里的新元素数组里的0(key)赋给$name身上,1(value)赋值给$age身上

 

因为each()完后数组指针将下移一位,如果在继续list--each的话就会打印出我的朋友袁修成的信息,

此时我想重新打印第一个,则要用到reset()函数了,它的作用是将数组指针重置到第一位

list($name,$age) = each($userNane);
    echo $name;  //陈云
    echo $age;  //19

    list($name,$age) = each($userNane);
    echo $name;  //罗鑫
    echo $age;  //21


    reset($userNane);
list($name,$age)
= each($userNane); echo $name; //陈云 echo $age; //19

 

到这里介绍一下两个好用的数组函数:

"UTF-8">
php
    $number = array(2,5,1,6,4,1,2,6);

    $newNumber = array_unique($number);

    //array_unique移除数组中重复的值,并且当时就创建了一个新的数组,
    //新的数组数据原封不动,老的数组就已经移除掉了重复的值

    print_r($newNumber);



    $number = array("陈云"=>12,"罗鑫"=>18);

    var_dump(array_flip($number));

    //array_flip()交换数组中的键和值

    
?>

具有作用看注释~

太晚了,人有点累了,不不不,我亲爱的二维数组还没遍历呢,怎能睡觉呢,不可以!!!

看代码:


第i个数组 中的 第j个元素,这样理解第二维的数组
		}

		echo "
"; } ?>

  

二维数组是啥?这里你可以把他理解为数组里的数组,上述代码就是数组里有三个数组。

此时问题来了,要是带有键值对二维数组呢?如何让遍历。

见代码:

    //遍历二位数组带key的
    $food = array(
            array('产品'=>'苹果','价格'=>'12','口味'=>''),
            array('产品'=>'鸡肉','价格'=>'13','口味'=>''),
            array('产品'=>'脉动','价格'=>'14','口味'=>'')
        );

    //利用 foreach() 来遍历

    for ($i=0; $i ) { 
        foreach ($food[$i] as $key => $value) {
            //echo $food[$i][$key].'|';   //只获取到数组里键 对应的值
            echo $key.'---'.$value;   //打印出了二维数组的键and值
        }

        echo "
"; }

 

看注释就一目了然啦,除了foreach() 来遍历,我们的情侣搭档list---each也是可以实现的

见代码:

    //遍历二位数组带key的
    $food = array(
            array('产品'=>'苹果','价格'=>'12','口味'=>''),
            array('产品'=>'鸡肉','价格'=>'13','口味'=>''),
            array('产品'=>'脉动','价格'=>'14','口味'=>'')
        );


    //利用 list--->each() 来遍历

    for ($i=0; $i ) { 
        while ( list($key,$value) = each($food[$i])) {    //each后的数组拆分赋给list()里的变量($key,$value)
            echo $key.'---'.$value.'|';   //打印出了二维数组的键值
        }

        echo "
"; }

 

 

到此,遍历就算是结束啦~

如有错误,欢迎指针~

么么哒,睡觉去鸟...

 

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

0

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

56

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

51

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

397

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

118

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

11

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 3.4万人学习

Excel 教程
Excel 教程

共162课时 | 12.9万人学习

MongoDB 教程
MongoDB 教程

共17课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号