PHP 5 Array 函数(超详细)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
前言
在 PHP 开发中,数组(Array)是处理数据的核心工具,而 PHP 5 版本提供的 Array 函数库,如同程序员手中的“瑞士军刀”,能高效完成数据筛选、合并、排序等复杂操作。无论是构建电商购物车、管理用户数据,还是处理动态生成的报表,掌握 PHP 5 Array 函数不仅能提升代码的可读性,还能显著优化开发效率。本文将从基础到进阶,通过实际案例与形象比喻,帮助读者系统性地理解这些函数的使用场景与底层逻辑。
函数分类与基础操作
PHP 5 的 Array 函数可大致分为四类:数据创建与操作、数据筛选与转换、数据排序与比较,以及关联数组与多维数组处理。以下从最基础的函数开始讲解。
1. 创建与操作数组
array()
:数组的“造物主”
array()
是创建数组的基石函数,可生成索引数组或关联数组。例如:
// 索引数组(默认数字键名)
$fruits = array("Apple", "Banana", "Orange");
// 关联数组(自定义键名)
$student = array("name" => "Alice", "age" => 20, "score" => 95);
比喻:就像用乐高积木搭建不同形状的模型,array()
让开发者自由定义数据的“骨架”。
count()
:数组的“尺子”
count()
可快速获取数组元素的数量:
echo count($fruits); // 输出 3
对于多维数组,它还能递归统计子元素(需设置第二个参数 COUNT_RECURSIVE
)。
2. 数据遍历与合并
foreach
:循环的“传送带”
PHP 的 foreach
是遍历数组的最佳实践,支持索引和关联数组的双重遍历:
foreach ($student as $key => $value) {
echo "Key: $key, Value: $value\n";
}
// 输出:
// Key: name, Value: Alice
// Key: age, Value: 20
// Key: score, Value: 95
比喻:如同工厂流水线,foreach
自动将每个元素“送”到代码块中处理。
array_merge()
:数组的“焊接机”
合并两个或多个数组的函数:
$array1 = array("a" => 1, "b" => 2);
$array2 = array("c" => 3, "d" => 4);
$merged = array_merge($array1, $array2);
print_r($merged);
// 输出:Array ( [a] => 1 [b] => 2 [c] => 3 [d] => 4 )
若合并索引数组,键名会被重置为连续的数字;若键名重复,后面的值会覆盖前面的。
进阶函数与数据处理
1. 数据筛选与转换
array_map()
:元素的“加工车间”
该函数对数组的每个元素执行回调函数,返回处理后的新数组:
$numbers = array(1, 2, 3);
$squared = array_map(function($num) {
return $num * $num;
}, $numbers);
print_r($squared); // 输出 Array ( [0] => 1 [1] => 4 [2] => 9 )
比喻:就像工厂的机械臂,array_map()
自动将每个元素送入“加工设备”(回调函数)处理。
array_filter()
:元素的“过滤网”
根据回调函数的返回值,保留符合条件的元素:
$numbers = array(0, 1, 2, 3, 4, 5);
$non_zero = array_filter($numbers, function($num) {
return $num > 0;
});
print_r($non_zero); // 输出 Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
若不指定回调函数,默认过滤掉“假值”(如 0
、null
、空字符串)。
2. 数据排序与比较
sort()
与 rsort()
:数组的“整理师”
$numbers = array(3, 1, 4, 1, 5);
sort($numbers); // 升序排序,输出 [1, 1, 3, 4, 5]
rsort($numbers); // 降序排序,输出 [5, 4, 3, 1, 1]
注意:这些函数会重置索引键名,若需保留原键名,可使用 asort()
或 arsort()
。
array_unique()
:去重的“筛子”
$fruits = array("Apple", "Banana", "Apple", "Orange");
$unique_fruits = array_unique($fruits);
print_r($unique_fruits); // 输出 Array ( [0] => Apple [1] => Banana [3] => Orange )
该函数仅保留首次出现的值,后续重复值会被移除。
3. 关联数组与多维数组处理
array_keys()
与 array_values()
:数组的“解构工具”
$student = array("name" => "Bob", "age" => 22, "score" => 88);
$keys = array_keys($student); // 输出 ["name", "age", "score"]
$values = array_values($student); // 输出 ["Bob", 22, 88"]
这两个函数常用于需要单独操作键名或值的场景。
array_multisort()
:多维数组的“交响乐指挥”
对多维数组按指定列排序:
$students = array(
array("name" => "Alice", "score" => 95),
array("name" => "Bob", "score" => 88),
array("name" => "Charlie", "score" => 92)
);
// 按分数降序排序
array_multisort(
array_column($students, "score"),
SORT_DESC,
$students
);
// 排序后,$students 的顺序变为 Alice → Charlie → Bob
比喻:如同指挥家协调不同乐器,array_multisort()
能精准控制多维数据的排序逻辑。
实战案例:电商购物车功能
假设需要实现一个简单的购物车系统,展示 PHP 5 Array 函数的综合应用:
场景需求
- 将商品加入购物车(数组);
- 计算总价;
- 移除指定商品;
- 按价格降序排序商品。
实现代码
// 初始化购物车(关联数组)
$cart = array(
array("id" => 101, "name" => "T-shirt", "price" => 25.99),
array("id" => 102, "name" => "Jeans", "price" => 49.99),
array("id" => 103, "name" => "Sneakers", "price" => 89.99)
);
// 1. 添加新商品
$new_item = array("id" => 104, "name" => "Backpack", "price" => 39.99);
$cart[] = $new_item;
// 2. 计算总价(使用 array_sum 和 array_column)
$total = array_sum(array_column($cart, "price"));
echo "Total: \${$total}"; // 输出 Total: $205.96
// 3. 移除指定商品(使用 array_filter)
$filtered_cart = array_filter($cart, function($item) {
return $item["id"] != 102; // 移除 ID 为 102 的商品
});
// 重置索引键名
$cart = array_values($filtered_cart);
// 4. 按价格降序排序(使用 array_multisort)
array_multisort(
array_column($cart, "price"),
SORT_DESC,
$cart
);
// 输出排序后的购物车
print_r($cart);
结论
PHP 5 的 Array 函数如同程序员的“工具箱”,从基础的 array()
、foreach
,到进阶的 array_map
、array_multisort
,每个函数都在特定场景中发挥独特价值。通过实际案例可以看到,合理运用这些函数不仅能简化代码逻辑,还能让数据处理更加高效与优雅。对于开发者而言,建议在日常项目中主动实践这些函数,并结合文档探索更多细节(如参数选项、错误处理)。掌握 PHP 5 Array 函数,是迈向高效 PHP 开发的重要一步。