这几天工作之余整理和分类了PHP 中常用的数组相关的函数。如有错误和遗漏,请留言指正!
数组函数整理
创建数组函数
- array array ([ mixed $... ] ):创建数组的语言结构
- array range ( mixed $start , mixed $end [, number $step = 1 ] ):根据范围创建数组
- array array_combine ( array $keys , array $values ):使用一个数组作为键,另一个数组作为值创建新的数组。
获取元素数量
- int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] ):获取数组元素总数
获取所有的键
- array array_keys ( array $array [, mixed $search_value = null [, bool $strict = false ]] ):获取数组所有键组成的数组。
获取所有的值
- array array_values ( array $array ):获取数组所有值组成的数组。
遍历数组元素
- mixed current ( array &$array ):获取数组当前元素。
- mixed key ( array $array ):获取数组当前元素的键。
- mixed next ( array &$array ):数组指针前移一步。
- mixed prev ( array &$array ):数组指针倒回一步。
- mixed reset ( array &$array ):数组指针指向第一个元素。
- mixed end ( array &$array ):数组指针指向最后一个元素。
- array each ( array &$array ):返回键值对,并数组指针前移一步。
数组位移操作
- mixed array_shift ( array &$array ):从数组移除一个元素,并返回。
- int array_unshift ( array &$array , mixed $value1 [, mixed $... ] ):数组头部插入一个或多个元素。
数组的栈操作
- mixed array_pop ( array &$array ):数组尾部最后一个元素移除并返回(出栈)。
- int array_push ( array &$array , mixed $value1 [, mixed $... ] ):数组尾部压入一个或多个元素(入栈)
数组元素排序
函数名称 | 排序依据 | 是否保持键 | 排序顺序 | 是否使用回调函数 |
---|
array_multisort() | 值 | 数字类型键不保持,字符串类型键保持 | 第一个数组或由选项指定 | 否 |
asort() | 值 | 是 | 由低到高 | 否 |
arsort() | 值 | 是 | 由高到低 | 否 |
ksort() | 键 | 是 | 由低到高 | 否 |
krsort() | 键 | 是 | 由高到低 | 否 |
natsort() | 值 | 是 | 自然排序 | 否 |
natcasesort() | 值 | 是 | 自然排序,大小写不敏感 | 否 |
sort() | 值 | 否 | 由低到高 | 否 |
rsort() | 值 | 否 | 由高到低 | 否 |
shuffle() | 值 | 否 | 随机 | 否 |
usort() | 值 | 否 | 用户定义 | 是 |
uasort() | 值 | 是 | 用户定义 | 是 |
uksort() | 键 | 是 | 用户定义 | 是 |
查找数组元素
- mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] ):查找值对应的第一个键名。
- bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ):判断值是否存在
- bool array_key_exists ( mixed $key , array $array ):判断键是否存在
使用回调函数
- array array_map ( callable $callback , array $array1 [, array $... ] )
- bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )
- bool array_walk_recursive ( array &$array , callable $callback [, mixed $userdata = NULL ] )
数组的差集
函数名称 | 是否比较键名 | 是否比较值 | 键是否使用回调函数 | 值是否使用回调函数 |
---|
array_diff_key() | 是 | 否 | 否 | 否 |
array_diff() | 否 | 是 | 否 | 否 |
array_diff_assoc() | 是 | 是 | 否 | 否 |
array_diff_ukey() | 是 | 否 | 是 | 否 |
array_udiff () | 否 | 是 | 否 | 是 |
array_diff_uassoc() | 是 | 是 | 是 | 否 |
array_udiff_assoc() | 是 | 是 | 否 | 是 |
array_udiff_uassoc() | 是 | 是 | 是 | 是 |
数组的交集
函数名称 | 是否比较键名 | 是否比较值 | 键是否使用回调函数 | 值是否使用回调函数 |
---|
array_intersect_key() | 是 | 否 | 否 | 否 |
array_intersect() | 否 | 是 | 否 | 否 |
array_intersect_assoc() | 是 | 是 | 否 | 否 |
array_intersect_ukey() | 是 | 否 | 是 | 否 |
array_uintersect () | 否 | 是 | 否 | 是 |
array_intersect_uassoc() | 是 | 是 | 是 | 否 |
array_uintersect_assoc() | 是 | 是 | 否 | 是 |
array_uintersect_uassoc() | 是 | 是 | 是 | 是 |
数组的合并
- array array_merge ( array $array1 [, array $... ] ):合并一个或多个数组。
- array array_merge_recursive ( array $array1 [, array $... ] ):递归地合并一个或多个数组。
替换数组元素
- array array_replace ( array $array1 , array $array2 [, array $... ] ):替换一个数组的元素。
填充已有数组
- array array_fill_keys ( array $keys , mixed $value ):使用指定的键和值填充。
- array array_fill ( int $start_index , int $num , mixed $value ):使用指定的值填充。
- array array_pad ( array $array , int $size , mixed $value ):以指定大小填充数组。
其他数组操作
- array array_reverse ( array $array [, bool $preserve_keys = false ] ):反转数组。
- array array_chunk ( array $array , int $size [, bool $preserve_keys = false ] ):分割数组。
- array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ):获取数组的一个列。
- mixed array_rand ( array $array [, int $num = 1 ] ):随机取出数组元素。
- array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ):取出数组的一部分元素。
- array array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] ):取代数组的一部分元素。
- array array_count_values ( array $array ):统计数组中的所有的值。
- number array_product ( array $array ):计算数组中所有值的乘积。
- number array_sum ( array $array ):对数组的所有值求和。
- array array_unique ( array $array [, int $sort_flags = SORT_STRING ] ):移除数组中重复的值。
- array list ( mixed $var1 [, mixed $... ] ):数组转换为一组变量。
- array array_change_key_case ( array $array [, int $case = CASE_LOWER ] ):数组键名大小写转化。
- array array_flip ( array $array ):交换数组的键和值。