一.PHP数组的分类

按照下标的不同,PHP中的数组分为关联数组和索引数组:
索引数组:下标从0开始,依次增长。

$arr=[1,2,3,4,5];

关联数组:下标为字符串格式,每个下标字符串与数组的值一一关联对应。(有点像对象的键值对)

$arr=["a"=>1;"b"=>2;"c"=>3];

注:[]声明在5.4版本之后才能使用。

二.关于关联数组和索引数组

1、数组中,可以同时存在索引数组和关联数组

  array(1,2,3,"four"=>4);

2、数组中,所有的索引数组,如果不加指定,会去掉关联项,默认增长(即关联数组不占索引位)

array(1,2,3,"four"=>4,5,6);

1,2,3,5,6的索引分别为0 1 2 3 4。
3、如果关联数组的key,是纯十进制整数字符串,则会将此数字转为索引数组的索引值

 array(1,2,3,"9"=>4);

1 2 3 4 的索引分别为 0 1 2 9。
 4、如果手动指定关联数组的key,索引数组的下标,如果与前面已有的key或下标重复,则后指定的值会覆盖之前的值

 array(1,2,"one"=>5,"one"=>6)

打印数组为  1 2 "one"=>6。
 5、如果手动指定索引数组下标,则后续自增长下标,会按照之前下标最大值,依次增长

array(1,2,3,"9"=>4,5);

1 2 3 4 5 的索引分别为 0 1 2 9 10。

三.数组的遍历

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

$arr=[1,2,3,4,5];
for($i=0;$i<count($arr);$i++){
echo $arr[$i];
}

2、foreach循环遍历数组(最常用的方法)
 foreach可以遍历任何类型的数组,案例如下:

$arr=[1,2,"one"=>5,"one"=>6];
foreach($arr as $key=>$value){
echo "这是key:{$key}";
echo "这是value:{$value}";
}

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

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

注意:

list()在解析数组时,只解析索引数组,不能取出关联项。

list()可以通过空参数,选择性的解析数组的值;

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

返回值:一个数组。包含一个索引数组(0 键 1 值)和一个关联数组("key" 键 "value" 值)。

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

注意:数组使用each遍历完一遍后,指针始终处于最后一位的下一位,即再用each,始终返回false,如果还需使用,需用reset()函数,重置数组指针。

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

next():将数组指针后移一位,并返回后一位的值,没有返回false。

prev():将数组指针前移一位,并返回前一位的值,没有返回false。

end():将数组的指针直接移至最后一位,并返回最后一位的值,空数组返回false。

reset():重置数组指针,恢复至第一位,并返回第一位的值,空数组返回false。

key():返回当前指针所在位的键,如果数组为空或指针指到最后,返回null。

current():返回当前指针所在位的值,如果数组为空或指针指到最后,返回false。

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

注意:

如果数组中存了false,空值会使next($arr)返回值是false,就会出现提前跳出的情况,所以用key($arr)===null判断是否到了最后一位。

以上就是数组函数的一些基本知识。

PHP数组简介的更多相关文章

  1. Numpy 多维数组简介

     NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.NumPy这个词来源于两个单词-- Numerical和Python.NumPy提供了大量的库函数和操作,可以帮助程序员轻松地 ...

  2. C#数组简介

    一.数组的定义 数组:是一种包含若干个变量的数据结构,这些变量可以通过索引进行访问. 数组的元素:数组中的变量就称为数组的元素. 元素类型:数组中的元素具有相同的数据类型,该数据类型就称为数组的元素类 ...

  3. JS基础_数组简介

    内建对象 宿主对象 自定义对象 数组(Array) - 数组也是一个对象 - 它和我们普通的对象功能类似,也是用来存储一些值的 - 不同的是普通对象是使用字符串作为属性名的 数组是使用数字来作为索引来 ...

  4. java数组简介

    数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据.数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写. 备注: 数组 ...

  5. shell 数组使用简介

    数组简介 bash 只提供一维数组,并且没有限定数组的大小.类似与C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标.下标可以是整数或算术表达式,其值应大于或等于 0.用户可以使用赋值语句 ...

  6. JavaScript 数组

    JavaScript 数组 简介:数组是值的有序集合,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改. 一:创建数组 ...

  7. JavaScript基础学习(三)—数组

    一.数组简介     JavaScript数组的每一项都可以保存任何类型的数据,也就是说数组的第一个位置保存字符串,第二个位置可以保存数值,第三个位置可以保存对象,而且数组的大小是可以动态调整的,即可 ...

  8. Java开发知识之Java数组

    Java开发知识之Java数组 一丶数组简介 首先,不管是Java 还是 C++ 还是其它语言.都有数组. (有可能叫法不同) 数组简而言之就是存储一段连续相同数据类型的数据结构 在Java中数组可以 ...

  9. GoLang基础数据类型--->数组(array)详解

    GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...

随机推荐

  1. TomCat杀进程

    有时候当你的tomcat启动时会发现 因为报以下的错误: "Several ports ( 8080, 8009) required by Tomcat v6.0 Server at loc ...

  2. FarPoint.Win.Spread 自定义表头

    最近C/S项目中用到FarPoint.Win.Spread,想在表头加个全选的checkbox,实现效果如图:   列的设置大家都清楚,直接可视化视图中设置该列CellType为CheckBox类型即 ...

  3. CF Manthan, Codefest 16 G. Yash And Trees 线段树+bitset

    题目链接:http://codeforces.com/problemset/problem/633/G 大意是一棵树两种操作,第一种是某一节点子树所有值+v,第二种问子树中节点模m出现了多少种m以内的 ...

  4. JS的块级作用域

    今天带来的是 "对<你不知道的js>中块级作用域的总结" 分享: 1)用with从对象中创建出来的作用域只在with声明中而非外部作用域有效,同时可以访问已有对象的属性 ...

  5. Spring事务隔离级别与传播机制详解,spring+mybatis+atomikos实现分布式事务管理

    原创说明:本文为本人原创作品,绝非他处转载,转账请注明出处 1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功.其必须遵循四个原则(ACID). ...

  6. python基本数据类型——set

    一.集合的定义 set集合,是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数 ...

  7. 全易通人事考勤工资验厂管理系统软件创建连接SQL2000数据库的操作方法和说明

    全易通人事考勤工资验厂管理系统软件创建连接SQL2000数据库的操作方法和说明.全易通人事考勤工资验厂管理系统软件,有2种数据库,一个是ACCESS,另一个是SQL.不过由于ACCESS数据库比较小, ...

  8. python object takes no parameters

    class Song(object): def __init__(self,lyrics): self.lyrics = lyrics def sing_me_a_song(self): for li ...

  9. 关于WordPress搬家方法步骤的整理

    最近准备更换自己的博客服务器,所以需要将原来服务器上的所有东西都搬到新的服务器.为了数据的安全,在网上找了很多的资料.现在整理一下整个搬家过程的操作步骤.下面进入正题: 1.测试环境这次我使用的示例服 ...

  10. Azure Event Bus 技术研究系列1-Event Hub入门篇

    前两个系列研究了Azure IoT Hub和Azure Messaging.最近准备继续研究Azure Event Bus,即Azure的事件中心.首先, Azure Event Hub的官方介绍: ...