数组常用的函数
count() 计算并返回数组中的元素的个数或者对象中的属性的个数!另外,count还有第二个参数,默认为0或false,如果是1或true,则支持递归统计
range() array range ( mixed $start
, mixed $limit
[, number $step
= 1 ] ) 建立一个包含指定范围单元的数组。
array_merge() array array_merge ( array $array1
[, array $...
] )
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
array_merge本来是用来连接两个或多个数组,但是也有一种特殊的情况,就是里面的参数只有一个
array_rand() mixed array_rand ( array $input
[, int $num_req
= 1 ] )
作用是:随机抽取数组内的几个元素的键!并返回一个索引数组!需要两个参数:第一个是一个数组名,第二个抽取的个数
shuffle() bool shuffle ( array &$array
) 作用是打乱一个数组,而且是直接在原数组上进行打乱!而且会重新生成索引下标!
案例:随机出现4个验证码
输出结果:
max() 和 min() 获得数组内的最大值和最小值!
array_keys() 获取所有元素的键,返回一个索引数组!
array_values() 获取所有元素的值,返回一个索引数组
array_combine() array array_combine ( array $keys
, array $values
) 返回一个 array,用来自 keys
数组的值作为键名,来自 values
数组的值作为相应的值。
有两个参数:都是数组,拿第一个数组的值作为新数组的键,第二个数组的值作为新数组的值重新组合成一个新数组! 要求:两个数组元素的个数要相同!
array_flip() array array_flip ( array $trans
) 交换数组的键和值!
in_array() 判断一个数据是否是某个数组里面元素的值!返回一个布尔值! 需要两个参数:第一个是某个具体的数据,第二个是一个数组名
array_key_exists() 判断一个数组内是否存在某个键,也返回一个布尔值, 也需要两个参数:第一个是具体的数据,第二个是一个数组名
array_search() 作用:搜索数组内的某个元素的值,并返回其下标值! 至少需要两个参数:第一个参数是一个具体的值第二个参数是一个数组名
与in_array的区别?in_array只是判断是否存在,而array_search判断的结果如果存在,则返回其下标值
array_chunk() arrayarray_chunk ( array $input
, int $size
[, bool $preserve_keys
= false ] )
将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个。
implode() 作用:将一个数组元素的所有的值,利用一个指定的分隔符连接成一个字符串!
需要两个参数:第一个是分割符,这里可以省略,如果省略,那就是没有分隔符第二个是一个数组名
explode() 作用:将一个字符串,利用其中的分隔符,将其分割成多个部分,形成一个数组! 需要两个参数:第一个参数是一个分隔符第二个参数是一个字符串!
extrac() 将数组中的每一个元素都变成一个变量,其中变量的名字就是数组元素的键,变量的值就是数组元素的值
常见的是,可以将一些数据放到一个数组内,然后作为函数的参数传递到一个函数内,然后在函数内把这个数组extract掉,从而产生了需要的变量!
compact() 利用多个变量,形成一个数组,很显然,数组元素的键就是变量的名字,数组元素的值就是变量的值!
回调函数
概念 所谓的回调函数(callback或callable),就是指用户自已定义一个函数(也可以是系统函数),然后由PHP负责调用,不需要手动调用
array_map() 作用:对数组中的每一个元素,都由系统调用某个函数
模拟数据结构 数据结构往往是通过数学模型来建立的!
栈:先进后出,后进先出 比如:刷碗,电梯
队列:先进先出,后进后出 比如:排队
栈模拟 如果数据是从数组的尾部进栈,也只能从尾部出栈, 如果数据是从数组的首部进栈,也只能从首部出栈
array_push() 将一个或多个数据压入数组的尾部!
array_pop() 将数组的最后一个数据弹出
array_unshift() 从数组的前面加入数据
array_shift() 从数组的前面弹出数据
例如:
输出结果:
排序函数
sort() 对数组中的元素进行升序排序,也就是从低到高! 排序之后,会丢失原数组的键,重新生成一个索引数组!
asort() 也是升序排序,只是排序后会保留以前的键值对
rsort() 对数组元素的值进行降序排序,也就是从高到低 排序之后会重新生成一个索引数组!
arsort() 也是降序排序,只是会保留以前的键值对!
例如:
输出结果: