PHP常用数组函数详解与代码示例

夏知夏
夏知夏
发布时间:2026-10-13| 3人浏览过
原创

PHP数组操作是后端开发的核心技能之一。本文系统梳理了常用的array函数,涵盖从基础的增删改查到复杂的映射与排序场景,配合清晰代码示例,帮助开发者快速定位所需函数并理解其行为差异。

数组构建与拆分操作

第1步:使用 array_combine 进行键值映射

功能说明:将两个数组合并为一个数组,第一个数组的值作为新数组的键名,第二个数组的值作为新数组的值。

<?php
$a = array("one","two","three");
$b = array("一","二","三");
$c = array_combine($a,$b);
print_r($c);
/* 结果: Array ( [one] => 一 [two] => 二 [three] => 三 ) */
?

第2步:使用 array_chunk 拆分数组

功能说明:将一个数组分割成多个新的子数组。参数指定每个子数组的元素数量,第三个布尔参数用于决定是否保留原始键名。

<?php
$input_array = array("a"=>"apple","b"=>"blue","c","d","e");
echo "<pre>";
// 默认不保留原始键名
print_r(array_chunk($input_array, 2));
// 保留原始键名 (TRUE)
print_r(array_chunk($input_array, 2, TRUE));
echo "</pre>";

第3步:使用 array_slice 截取数组片段

功能说明:根据偏移量和长度从数组中提取部分元素。支持负数索引(从末尾开始计数)和保留键名选项。

<?php
$input = array("a","b","c","d","e");
// 从索引2取到最后
print_r(array_slice($input, 2));
// 取倒数第二个元素之前的一段
print_r(array_slice($input, -2, 1));
// 保留原始键名
print_r(array_slice($input, 2, -1, true));

数组合并与比较操作

第4步:使用 array_merge 合并数组

功能说明:合并一个或多个数组。若键名相同,后面的值会覆盖前面的值;数字键名会自动重新索引追加到末尾。array_merge_recursive 则是递归合并相同键名的数组。

<?php
$array1 = array("color"=>"red", 2, 4);
$array2 = array("a","b","color"=>"green","shape"=>"trapezoid", 4);
$result1 = array_merge($array1, $array2); // 普通合并
$result2 = array_merge_recursive($array1, $array2); // 递归合并
echo "<pre>";
print_r($result1);
print_r($result2);
echo "</pre>";

第5步:使用 array_diff 计算差集

功能说明:返回一个数组,包含所有在第一个数组中出现但不在其他参数数组中出现的值。该比较仅基于值,不考虑键名。

<?php
$array1 = array("a"=>"apple","b"=>"blue","c","d","e");
$array2 = array("apple","c","d","f");
// $array1 中存在但 $array2 中不存在的内容
print_r(array_diff($array1, $array2));
// 反之
print_r(array_diff($array2, $array1));

数组元素的添加、删除与查询

第6步:压入与弹出栈顶/栈底元素

功能说明:

  • array_push: 将一个或多个单元推入数组的末尾,返回推入后的总元素个数。
  • array_pop: 弹出并返回数组最后一个单元(即出栈),并将数组缩短一个单元。
  • array_shift: 将数组开头的单元移出数组并返回,同时剩余单元往左移一位(重新建立索引)。
<?php
$stack = array("orange","banana");
// 推入多个元素
$count = array_push($stack, "apple", "red");
print_r($stack); // 包含 push 后的内容

// 弹出末尾
$last = array_pop($stack);
print_r($last);  // 输出最后弹出的元素

// 弹出开头
$first = array_shift($stack);
print_r($first); // 输出最前弹出的元素

第7步:查找与获取特定值

功能说明:

  • in_array: 检查某值是否存在于数组中,返回布尔值。
  • array_search: 搜索给定的值,返回对应的键名。若有多个匹配,返回第一个。
  • array_keys: 返回数组中所有的键名。可指定第二个参数过滤只返回匹配该值的键名。
<?php
$array = array("blue"=>"b", "red"=>"r", "green", "r");

// 查找值 'b' 的键名
echo array_search('b', $array); // 输出: blue

// 查找值 'r' 的所有键名 (array_keys带过滤)
print_r(array_keys($array, "r")); // 输出对应 'r' 的键名列表

第8步:获取随机或特定位置的单元

功能说明:

  • array_rand: 从数组中取出一个或多个随机的单元,并返回键名。如果只取一个,直接返回键名;取多个则返回键名数组。
  • shuffle: 将数组打乱(随机排列顺序),原数组被改变。
<?php
$input = array("orange","banana","apple");
$randKey = array_rand($input, 2); // 获取2个随机键名
print_r($randKey);

// 打乱数组
shuffle($input);
print_r($input);

数组遍历指针与状态管理

第9步:操作数组内部指针

功能说明:PHP数组内部维护一个当前指针,用于追踪当前位置。相关函数包括 current(当前)、next(下移)、prev(上移)、end(指向末尾)和 reset(重置回开头)。

<?php
$array = array("foot", "bike", "car", "plane");
echo current($array); // foot
next($array);        // 指向 bike
echo current($array); // bike
end($array);         // 指向 plane
echo current($array); // plane

第10步:变量拆解 list()

功能说明:list() 用于一次性把数组中的值赋给一组变量。可以用空占位符跳过某些元素。

<?php
$info = array("red", "blue", "green");
list($flag, $sky, $grassland) = $info;
// 跳过中间元素
list($flag, , $grassland) = $info; 

数据统计与去重

第11步:统计频次与唯一性检查

功能说明:

  • array_count_values: 统计数组中所有值出现的次数,返回以原值为键、频次为值的数组。
  • array_unique: 移除数组中重复的值并保留原有的键名关系,返回去重后的数组。
  • count: 计算数组中的单元数目,对于多维数组,嵌套数组通常计为1个。
<?php
$input = array("a"=>"green","red","b"=>"green","blue","c"=>"red");

// 去重,保留首个出现的位置
print_r(array_unique($input));

// 统计值出现次数
// 注意: array_count_values 要求值只能是字符串或整数
$values = array("1", "3", "a", "3");
print_r(array_count_values($values));

数组映射与反向处理

第12步:执行回调函数 array_map

功能说明:将用户自定义函数应用到数组中的每个元素上,返回处理后的新数组。

<?php
function cube($n) {
    return ($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b); // 输出各数的立方

第13步:反转数组 array_reverse

功能说明:按相反的顺序返回一个新数组。第三个参数为 TRUE 时保留原有的键名。

<?php
$input = array("php", 3.0, array("green","red"));
$result = array_reverse($input, TRUE); // 保留键名
print_r($result);

数组排序算法详解

PHP提供了多种排序函数,区别在于是否保持键名关联(Associative)以及是对值排序还是对键排序。

第14步:保持键名关联的排序

  • asort:按值正向排序,保持键名关联。
  • arsort:按值逆向排序,保持键名关联。
  • ksort:按键名正向排序,保持键名关联。
  • krsort:按键名逆向排序,保持键名关联。

第15步:重置索引的重排序

以下函数排序后会将数组索引重置为从0开始的连续数字索引:

  • sort:按值正向排序(重新索引)。
  • rsort:按值逆向排序(重新索引)。
<?php
$fruits = array(
    "a" => "lemon",
    "b" => "orange",
    "c" => "banana",
    "d" => "apple"
);

// 按键名正向排序
ksort($fruits);
foreach ($fruits as $key => $val) { echo "$key = $val<br>"; }

// 按值逆向排序(键名将变为 0,1,2,3)
rsort($fruits);
foreach ($fruits as $key => $val) { echo "$key = $val<br>"; }
以上就是 PHP 常用数组(array)函数实例总结的详细内容,更多关于 PHP 数组操作技巧的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。