数组函数

PHP的数组是一个有序映射,是一种将值(value)映射到键(key)上的数据类型。

本章节列出截至PHP 7.3所有的数组函数以供参考。

下表以相关性排序。

函数名 描述
array() 创建一个数组。返回创建的数组
compact() 返回一个将参数列表中的参数名作为键名、与参数名同名的变量的值作为对应的键值的数组
extract() compact()函数相反,它将数组中的每个元素被转为对应的变量,其中数组的键名作为变量名,键值作为对应键名的变量值
array_combine() 传入两个数组,用其中一个数组的键值作为键名,另一个数组的键值作为键值,组合出一个新的数组
range() 根据指定的起始字符(数字或字母)到指定的终止字符,来创建一个包含该范围内元素的数组
array_reverse() 翻转一个数组元素的顺序
array_merge() 合并一个或多个数组,返回合并后的数组
array_merge_recursive() 递归地合并一个或多个数组
list() 语言结构将数组中的值赋给指定变量
count() 返回指定数组的元素个数或实现了Countable接口的对象对象属性的个数
sizeof() 函数count()的别名,返回指定数组的元素个数或实现了Countable接口的对象对象属性的个数
key_exists() 检查数组中是否含有指定键名
array_key_exists() 为函数key_exists()的别名,检查数组中是否含有指定键名
array_keys() 返回数组中的所有键名或某个值的键名(可能不止一个)
array_key_first() 返回指定数组中的第一个键值对的键名
array_key_last() 返回指定数组的最后一个键值对的键名
in_array() 检查某个值是否为指定数组的元素
array_values() 返回一个包含指定数组中的所有键值的数字索引数组
array_count_values() 统计指定数组的键值信息,返回一个以键值为键名、对应键值出现的次数为键值的关联数组
array_change_key_case() 将指定数组的键名改为全大写或全小写(只改变键名中的英文部分)
key() 返回当前数组指针指向的元素的键名
reset() 将数组指针重置到开头的位置,并返回该数组第一个元素的值
end() 将数组指针移动到最后一个元素的位置
current() 返回指定数组当前指针所在的元素值
pos() 函数current()的别名。返回指定数组当前指针所在的元素值
prev() 将数组指针倒回一位(此时指针指向上一个数组元素的位置)
next() 与函数prev()相反,将数组指针向后移一位(此时指针指向下一个数组元素)
each() 返回当前指针指向的元素的键值对,并将指针指向下一个数组元素(从PHP 7.2.0开始被弃用!)
array_column() 取出一个多维数组中某一列的值,类似于数据库二维表格
array_flip() 将指定数组中的键和值交换,键值成为新数组的键名,键值对应的键名成为新数组的键值
array_fill() 使用指定值填充数组的多个元素
array_fill_keys() 接受一个键名数组,返回一个使用特定值填充这些键名的数组
array_pad() 将特定值填充一定数量至数组
array_push() 将一个或多个元素添加至数组的末尾
array_pop() 将删除数组的最后一个元素,返回删除的最后一个元素
array_shift() 与函数array_pop()相反,将数组开头的元素删除,并返回被删除的第一个元素
array_unshift() array_push()相反,将一个或多个元素添加至数组的开头,返回添加元素后数组的长度
array_unique() 去除一维数组中的重复值,对每个值只保留第一次出现的键名
array_filter() 将数组中的每个值发送到指定的回调函数处理,如果回调函数返回TRUE,则该元素被添加至返回的数组,键名不变
array_rand() 从数组中随机取出指定个元素
array_chunk() 将指定数组分割成多个等元素个数的数组(最后一个子数组的元素个数可能少于指定的数目)
array_slice() 从指定位置取出数组中一段连续的指定长度的元素,返回被取出的元素数组
array_splice() 移除指定位置指定长度的数组元素(,第四个参数存在时将在指定位置插入,且新插入的元素索引不被保留),返回被移除的元素
array_search() 将在数组中查找指定的值,一旦找到即返回该值第一个对应的键名
array_replace() 使用后面的参数(数组)替换前面参数(数组)里的同键名元素,返回替换后的数组
array_replace_recursive() 与函数array_replace()类似,使用后面的参数(数组)替换前面参数(数组)里的同键名元素,但如果同键名的两个元素都是数组时,在这两个数组中也会递归地替换其值
shuffle() 将指定数组的元素顺序随机打乱
sort() 对数组的键值进行升序排序
rsort() 对数组的键值进行降序排序
ksort() 对数组的键名(key)进行升序排序
krsort() 对数组的键名(key)进行降序排序
asort() sort()函数一样,都是对数组的键值进行升序排序,不一样的是会保留原来的键名,而不是重新分配数字键名
arsort() 对数组的键值进行降序排序
usort() 使用用户自定义的比较方法对数组元素进行排序
uksort() 使用用户自定义的函数对数组的键名进行排序
uasort() usort()类似,使用用户自定义的函数对数组元素进行排序处理。但会保留数组的键名,而不是重新赋予数字索引
natsort() 使用与人类相同的对字母数字字符串排序的排序算法,对数组的值进行排序,并保留其键名
natcasesort() 使用与人类相同的对字母数字字符串排序的排序算法,对数组的值进行排序,并保留其键名,不区分大小写
array_multisort() 对多个数组或多维数组进行排序
array_product() 计算数组中所有值的乘积
array_sum() 计算数组中所有元素的和
array_diff() 计算第一个数组与后面一个或多个数组之间的差集
array_diff_assoc() 与函数array_diff()一样,计算第一个数组与后面一个或多个数组之间的差集,但还会比较键名是否相同
array_diff_key() 与函数array_diff()不同,使用键名来对比第一个数组与后面一个或多个数组之间的差集
array_diff_uassoc() 使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的差集
array_diff_ukey() 使用用户自定义的函数对两个数组的键名进行比较,比较第一个数组与后面数组的差集
array_udiff() 使用用户自定义的比较函数对两个数组的键值进行比较,比较第一个数组与其后的数组之间的差集
array_udiff_assoc() 使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的差集
array_udiff_uassoc() 使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的差集
array_intersect() 计算第一个数组与后面一个或多个数组之间的交集
array_intersect_assoc() 计算第一个数组与后面一个或多个数组之间的交集,同时会比较键名
array_intersect_key() 使用键名来对比第一个数组与后面一个或多个数组之间的交集
array_intersect_uassoc() 使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的交集
array_intersect_ukey() 使用用户自定义的函数对两个数组的键名进行比较,比较第一个数组与后面数组的交集
array_uintersect_assoc() 使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的交集
array_uintersect() 使用用户自定义的比较函数对两个数组的键值进行比较,比较第一个数组与其后的数组之间的交集
array_uintersect_uassoc() 使用用户自定义的函数对两个数组的键值对进行比较,比较第一个数组与后面数组的交集
array_map() 对数组中的每个元素都调用指定函数
array_reduce() 迭代地处理数组中的每个元素,将数组迭代成一个单一的值
array_walk() 将使用用户自定义的回调函数处理指定数组的每一个元素
array_walk_recursive() 将使用用户自定义的函数对数组中的每个元素进行处理,与array_walk()函数不同的是,还会深入地递归到更深层次的数组中去

本参考手册的格式说明:

  • 函数名
  • 定义
  • 语法
    • 函数名
    • 参数列表:参数列表中,变量名前是该变量的数据类型,其中特殊的mixed表示有多种可能的数据类型;使用方括号包裹的参数表示可选
    • 返回类型:冒号后面是函数的标准返回类型
  • 参数说明
  • 示例
  • 延展阅读
    • 与当前函数具有相关性、相似性的函数

一路看下来是不是对 PHP 数组函数有点懵?好像这些函数名长得都一样?就数组函数来说,有以下几个记忆点: