PHP array_reverse() 函数详解:数组反转的 N 种方式
- 2026年7月3日
- 189 次
前言
最近处理日志数据,发现数据是按时间正序存储的,但前端需要倒序展示。本来想写个循环倒排,后来发现 array_reverse() 一行搞定。
基本用法
array_reverse(array, preserve_keys) - 反转数组元素顺序。第二个参数默认 false(重置键名),设为 true 保留原键名。
<?php
$items = ['a', 'b', 'c', 'd'];
$reversed = array_reverse($items);
print_r($reversed);
// Array ( [0] => d [1] => c [2] => b [3] => a )
?>
保留键名
<?php
$data = [5 => 'A', 10 => 'B', 15 => 'C'];
$rev = array_reverse($data, true);
print_r($rev);
// Array ( [15] => C [10] => B [5] => A )
?>
其他反转方式
<?php
$data = [5 => 'A', 10 => 'B', 15 => 'C'];
$rev = array_reverse($data, true);
print_r($rev);
// Array ( [15] => C [10] => B [5] => A )
?>
| 方式 | 原地 | 保留键名 | 复杂度 |
|---|---|---|---|
| array_reverse() | 否 | 可选 | O(n) |
| ksort() + krsort() | 是 | 是 | O(n log n) |
| 循环交换 | 是 | 是 | O(n) |
实战场景
场景1:日志倒序
<?php
$logs = get_logs(); // 按时间正序
$recent = array_reverse($logs);
foreach ($recent as $log) {
echo $log->message;
}
?>
场景2:栈式遍历
<?php
$items = get_items();
$stack = array_reverse($items);
while ($item = array_pop($stack)) {
process($item);
}
?>
踩坑提醒
- array_reverse() 返回新数组,不修改原数组
- preserve_keys 只对数字键有效
- 大数组反转注意内存
总结
- array_reverse() 是最简洁的反转方式
- preserve_keys 参数控制是否保留原键名
- 注意内存占用,超大数组考虑分批处理
<?php
$logs = get_logs(); // 按时间正序
$recent = array_reverse($logs);
foreach ($recent as $log) {
echo $log->message;
}
?>
<?php
$items = get_items();
$stack = array_reverse($items);
while ($item = array_pop($stack)) {
process($item);
}
?>
踩坑提醒
- array_reverse() 返回新数组,不修改原数组
- preserve_keys 只对数字键有效
- 大数组反转注意内存
总结
- array_reverse() 是最简洁的反转方式
- preserve_keys 参数控制是否保留原键名
- 注意内存占用,超大数组考虑分批处理
若非作者标注皆为李涛自留地原创文章,转载或复制请以超链接形式并注明出处。
- 上一篇: PHP array_rand()、array_sum()、array_product() 常用聚合函数
- 下一篇: PHP array_diff() 和 array_intersect() 详解:数组集合运算
- Css3中list-style-type的实用属性及属性详细解读 2022-09-26
- WordPress代码实现文章目录功能 WordPress不用插件自动文章目录效果 2022-05-29
- PHP类常量如何定义及调用?PHP类常量调用实例代码 2022-12-03
- PHP常用字符串函数删除字符串空白符函数用法及实例 2022-10-18
- wordpress的robots.txt在哪儿?wordpress修改robots文件的方法 2022-09-22
- PHP错误处理的作用及不安全因素 PHP如何禁止显示错误? 2022-11-28
