1、数组
数组是一种复合类型,存放在内存中的堆区,里面可以保存多个不同类型的数据,而且长度默认的是没有限制!
数组的组成
数组,是由元素(element)组成的,每个元素都是数组的中的一个成员!
元素的名字,叫作下标(index),也叫作键(key),元素的值,叫作值(value)
所以,数组中的一个元素也叫作一个“键值对”(key/value)
创建数组
显式创建
就是利用array显式的创建:
隐式创建
其实就是利用数组的中括号语法创建:
其中,键名可以缺省,系统会自动加上索引下标!
2、数组的指针
在每一个数组的内部,都有一个数组元素的指针(看不见摸不着),该指针负责指向数组内的某个元素,那么这个被指向的元素,就叫作“当前元素”!
典型的,如果我们定义了一个数组然后什么都没做的话,此时数组的指针就指向该数组的第一个元素!
指针相关函数:
key():语法是:key(数组名),作用:获取该数组当前元素的键!
current():语法是:current(数组名),作用:获取该数组当前元素的值!
next():语法是:next(数组名),作用:将数组的指针下移一位
reset():语法是:reset(数组名),作用:重置数组的指针(将数组的指针重新指向第一个元素)
prev():向上移动数组指针,previous(先前的)
end():reset是将数组的指针移动到第一个元素,那么end也是重置指针,不过是重置到最后一个元素!
3、数组常用函数
each():同时兼备了key、current、next函数的功能,既可以获取到当前元素的值,也能获取到当前元素的键!
注意each的返回值:
1), 返回的是一个数组,而且是一个索引和关联并存的混合数组
2), 在原有数组的当前元素的基础上,重新创建了一个新的数组,其中原数组元素的值和键都是新数组的值,并为其分别创建了索引下标和关联下标
其中索引的:$each[0]代表原数组当前元素的键,$each[1]代表原数组当前元素的值
其中关联的:$each[‘key’]代表原数组当前元素的键,$each[‘value’]代表原数组当前元素的值
list():也是一个系统函数,它可以利用一个索引数组,一次性的为多个变量赋值!
while+each+list遍历:
count():计算并返回数组中的元素的个数或者对象中的属性的个数!另外,count还有第二个参数,默认为0或false,如果是1或true,则支持递归统计(内部数组的值也会统计)
range():使用range来定义数组,有三个参数:1)、开始字符或数字,2)、结束的字符或数字3)、步伐:一次跳转几个字符或数字
array_merge():array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面,返回作为结果的数组。如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面(重新索引)。即使索引下标没有冲突,一样是重新索引。如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引
另外,运算符"+"也可以实现数组的合并,规则:无论是索引数组还是关联数组,都会直接舍弃后面重复下标的元素!
array_rand():这里的rand是随机的意思,作用是随机抽取数组内的几个元素的键!并返回一个索引数组!需要两个参数:第一个是一个数组名,第二个抽取的个数
shuffle():作用是打乱一个数组,而且是直接在原数组上进行打乱!而且会重新生成索引下标!
max()和min():还可以获得数组内的最大值和最小值!
array_keys():获取所有元素的键,返回一个索引数组!
array_values():获取所有元素的值,返回一个索引数组!
array_combine():有两个参数,都是数组,拿第一个数组的值作为新数组的键,第二个数组的值作为新数组的值重新组合成一个新数组!
array_flip():交换数组的键和值!
in_array():判断一个数据是否是某个数组里面元素的值!返回一个布尔值!需要两个参数:第一个是某个具体的数据,第二个是一个数组名
array_key_exists():判断一个数组内是否存在某个键,也返回一个布尔值,也需要两个参数:第一个是具体的数据,第二个是一个数组名
array_search():作用是搜索数组内的某个元素的值,并返回其下标值!至少需要两个参数:第一个参数是一个具体的值,第二个参数是一个数组名
array_chunk():将一个数组分割成多个数组,其中每个数组的单元数目由 第二个参数 决定。最后一个数组的单元数目可能会少于 第二个参数 个。
implode():作用是将一个数组元素的所有的值,利用一个指定的分隔符连接成一个字符串!需要两个参数:第一个是分割符,这里可以省略,如果省略,那就是没有分隔符,第二个是一个数组名;
explode():作用是将一个字符串,利用其中的分隔符,将其分割成多个部分,形成一个数组!需要两个参数:第一个参数是一个分隔符,第二个参数是一个字符串!
extract():将数组中的每一个元素都变成一个变量,其中变量的名字就是数组元素的键,变量的值就是数组元素的值!常见的是,可以将一些数据放到一个数组内,然后作为函数的参数传递到一个函数内,然后在函数内把这个数组extract掉,从而产生了需要的变量!
compact():利用多个变量,形成一个数组,很显然,数组元素的键就是变量的名字,数组元素的值就是变量的值!使用场景:如果一个函数的返回值有很多个,可以把所有的返回值放到一个数组里面,然后返回这个数组就行了!
array_map():有两个参数,第一个是一个函数,第二个是一个数组或是一个数组列表,使后面的数组每一个单元都经过第一个函数的处理,返回处理过后的数组
array_push():将一个或多个数据压入数组的尾部!
array_pop():将数组的最后一个数据弹出
array_unshift():从数组的前面加入数据
array_shift():从数组的前面弹出数据
sort():对数组中的元素进行升序排序,也就是从低到高!排序之后,会丢失原数组的键,重新生成一个索引数组!
asort():也是升序排序,只是排序后会保留以前的键值对!
rsort():这里的r就是reverse的意思!对数组元素的值进行降序排序,也就是从高到低:排序之后会重新生成一个索引数组!
arsort():也是降序排序,只是会保留以前的键值对!
时间: 2024-10-16 05:53:21