PHP常用数组函数详解与代码示例
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 数组操作技巧的资料请关注本站其它相关文章!免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









