要介绍的第一个数据结构就是数组。
数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。
如果你学习过 C 语言,应该对这段定义很熟悉,但是在 PHP 这种动态语言中,因为数组底层是通过散列表(后面我们会介绍这个数据结构)实现的,所以功能异常强大,这段常规的数组定义在 PHP 中并不成立,PHP 的数组可以存储任何类型数据,如果与 Java 对比的话,PHP 数组集成了 Java 的数组、List、Set、Map 于一身,所以写代码的效率比 Java 高了几个量级。
抛开 PHP 或 JavaScript 这种动态语言,对于传统的数组,比如 C 语言和 Java 中的数组,在使用之前都需要声明数组存储数据的类型和数组的大小,数组的优点是可以通过下标值随机访问数组内的任何元素,算法复杂度是 O(1),非常高效,但是缺点是删除/插入元素比较费劲,以删除为例,需要在删除某个元素后,将后续元素都往前移一位,如果是插入,则需要将插入位置之后的元素都往后移,所以对数组的插入/删除而言,算法复杂度是 O(n),当然了,这个是针对 C / Java 这种语言而言,PHP 不受此约束,因为它不是传统一样上的数组嘛。