数组函数
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的,很明显这跟数组排序有关: