数组函数
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 数组函数有点懵?好像这些函数名长得都一样?就数组函数来说,有以下几个记忆点:
- 函数名中带有字母
k
或单词key
的,它们表示该方法与数组的键名有关: - 函数名中带有单词
value
的,它们表示该方法仅与数组的键值有关(但在计算差集或交集的函数中,如果函数名中既不带key
也不带assoc
,则默认只比较键值): - 函数名中带有字母
a
开头(但不是array
)或者单词assoc
的,它们通常表示该方法与数组的键值对(键与值)有关: - 函数名中带有字母
u
开头的,它们通常表示该方法与用户自定义函数有关: - 函数名中带有单词
sort
的,很明显这跟数组排序有关: