php_ref_array
PHP 数组函数
Section titled “PHP 数组函数”PHP 数组介绍
Section titled “PHP 数组介绍”数组(Array)是 PHP 中一种基本的数据结构,允许你在单个变量中存储多个值。PHP 提供了丰富的一系列函数来有效地创建、访问和操作数组。
PHP 支持数字索引数组(默认为从索引 0 开始)和关联数组(使用字符串键)。多维数组(包含其他数组的数组)也得到完全支持。
现代 PHP 版本(自 PHP 5.4 起)倾向于使用短数组语法 [] 而非旧的 array() 构造,以提高可读性:
<?php// 旧语法$indexedOld = array(1, 2, 3);$assocOld = array('a' => 1, 'b' => 2);
// 现代语法 (推荐)$indexedNew = [1, 2, 3];$assocNew = ['a' => 1, 'b' => 2];?>数组函数内置于 PHP 核心中。使用它们无需安装或特殊配置。
核心数组函数
Section titled “核心数组函数”这里列出了一些 PHP 中常用的内置数组函数。如需完整且最新的列表,请始终参考官方 PHP 文档。
| 函数 | 描述 |
|---|---|
| [] / array() | 创建一个数组 (在现代 PHP 中使用 [])。 |
| array_change_key_case() | 将数组中所有键更改为小写或大写。 |
| array_chunk() | 将一个数组分割成多个较小的数组块。 |
| array_column() | 返回多维数组中单列的值。 |
| array_combine() | 通过使用一个数组作为键,另一个数组作为值来创建一个新数组。 |
| array_count_values() | 统计数组中每个值出现的次数。 |
| array_diff() | 计算数组的差集 (仅比较值)。 |
| array_diff_assoc() | 计算带有额外索引检查的数组差集 (比较键和值)。 |
| array_diff_key() | 使用键进行比较,计算数组的差集。 |
| array_fill() | 用指定的值填充一个数组。 |
| array_fill_keys() | 用指定的值填充一个数组,同时指定键。 |
| array_filter() | 使用回调函数过滤数组的元素。 |
| array_flip() | 交换数组中所有键与其关联的值。 |
| array_intersect() | 计算数组的交集 (仅比较值)。 |
| array_intersect_assoc() | 计算带有额外索引检查的数组交集 (比较键和值)。 |
| array_intersect_key() | 使用键进行比较,计算数组的交集。 |
| array_is_list() | 检查数组的键是否是从 0 到 count()-1 的序列 (PHP 8.1+)。用于区分索引数组和关联数组。 |
| array_key_exists() / key_exists() | 检查指定的键是否存在于数组中。 |
| array_keys() | 返回数组的所有键或部分键。 |
| array_map() | 将回调函数应用于给定数组的元素。 |
| array_merge() | 合并一个或多个数组。注意:后面的关联键会覆盖前面的。数字键会被重新索引。 |
| array_merge_recursive() | 递归地合并一个或多个数组。 |
| array_multisort() | 对多个或多维数组进行排序。 |
| array_pad() | 使用指定值将数组填充到指定长度。 |
| array_pop() | 将数组最后一个元素弹出 (移除并返回)。 |
| array_product() | 计算数组中值的乘积。 |
| array_push() | 将一个或多个元素推入(添加到)数组末尾。 |
| array_rand() | 从数组中随机取出(一个或多个)键。 |
| array_reduce() | 使用回调函数迭代地将数组简化为单个值。 |
| array_replace() | 将传入数组的值替换到第一个数组中。 |
| array_replace_recursive() | 递归地将传入数组的值替换到第一个数组中。 |
| array_reverse() | 返回元素顺序反转的数组。 |
| array_search() | 在数组中搜索给定的值,如果成功则返回第一个对应的键。 |
| array_shift() | 将数组的第一个元素移出 (移除并返回)。 |
| array_slice() | 提取数组的一部分切片。 |
| array_splice() | 移除数组的一部分,并替换为其他内容。 |
| array_sum() | 计算数组中值的总和。 |
| array_unique() | 移除数组中的重复值。 |
| array_unshift() | 将一个或多个元素前置(添加到)数组开头。 |
| array_values() | 返回数组中的所有值,并对数组重新进行数字索引。 |
| array_walk() | 将用户提供的函数应用于数组的每个成员。 |
| array_walk_recursive() | 递归地将用户提供的函数应用于数组的每个成员。 |
| arsort() | 根据值对关联数组进行降序排序。 |
| asort() | 根据值对关联数组进行升序排序。 |
| compact() | 创建一个包含变量及其值的数组。 |
| count() / sizeof() | 计算数组中的所有元素或对象中的属性。推荐使用 count()。 |
| current() | 返回数组中的当前元素。 |
| end() | 将数组的内部指针设置为最后一个元素。 |
| extract() | 将数组中的变量导入当前符号表。由于可能覆盖现有变量,请谨慎使用。 |
| in_array() | 检查数组中是否存在指定的值。 |
| key() | 获取数组中当前元素的键。 |
| krsort() | 根据键对关联数组进行降序排序。 |
| ksort() | 根据键对关联数组进行升序排序。 |
| list() | 将变量赋值,就像它们是一个数组一样。现代 PHP 也支持解构赋值:[$a, $b] = $array;。 |
| natcasesort() | 使用不区分大小写的“自然顺序”算法对数组进行排序。 |
| natsort() | 使用“自然顺序”算法对数组进行排序。 |
| next() | 向前移动数组的内部指针。 |
| prev() | 向后移动数组的内部指针。 |
| range() | 创建一个包含指定范围元素的数组。 |
| reset() | 将数组的内部指针设置为第一个元素。 |
| rsort() | 对索引数组进行降序排序。 |
| shuffle() | 打乱(随机化元素顺序)数组。 |
| sort() | 对索引数组进行升序排序。 |
| uasort() | 使用用户定义的比较函数根据值对数组进行排序,同时保持键的关联。 |
| uksort() | 使用用户定义的比较函数根据键对数组进行排序。 |
| usort() | 使用用户定义的比较函数根据值对数组进行排序。 |
注意:each() 函数在 PHP 7.2 中被弃用,并在 PHP 8.0 中被移除。请使用 foreach 循环或 current()、key()、next()、prev() 和 reset() 等函数来遍历数组并管理内部指针。
最佳实践:对于遍历数组,foreach 循环通常是最具可读性和推荐的方法:
<?php$colors = ['red', 'green', 'blue'];
// 遍历值foreach ($colors as $color) { echo "Color: $color\n";}
$capitals = ['USA' => 'Washington D.C.', 'UK' => 'London'];
// 遍历键和值foreach ($capitals as $country => $city) { echo "Capital of $country is $city\n";}?>提示:对于非常大的数据集,考虑使用生成器(Generators,即 yield)而非在内存中构建大型数组,以提高性能并减少内存消耗。