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 )  

若不指定回调函数,默认过滤掉“假值”(如 0null、空字符串)。


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 函数的综合应用:

场景需求

  1. 将商品加入购物车(数组);
  2. 计算总价;
  3. 移除指定商品;
  4. 按价格降序排序商品。

实现代码

// 初始化购物车(关联数组)  
$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_maparray_multisort,每个函数都在特定场景中发挥独特价值。通过实际案例可以看到,合理运用这些函数不仅能简化代码逻辑,还能让数据处理更加高效与优雅。对于开发者而言,建议在日常项目中主动实践这些函数,并结合文档探索更多细节(如参数选项、错误处理)。掌握 PHP 5 Array 函数,是迈向高效 PHP 开发的重要一步。

最新发布