李涛自留地
回到顶部
首页 > php学习 > PHP array_reverse() 函数详解:数组反转的 N 种方式

PHP array_reverse() 函数详解:数组反转的 N 种方式

文章目录

前言

最近处理日志数据,发现数据是按时间正序存储的,但前端需要倒序展示。本来想写个循环倒排,后来发现 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 )
?>

其他反转方式

方式 原地 保留键名 复杂度
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);
}
?>

踩坑提醒

  1. array_reverse() 返回新数组,不修改原数组
  2. preserve_keys 只对数字键有效
  3. 大数组反转注意内存

总结

  1. array_reverse() 是最简洁的反转方式
  2. preserve_keys 参数控制是否保留原键名
  3. 注意内存占用,超大数组考虑分批处理

若非作者标注皆为李涛自留地原创文章,转载或复制请以超链接形式并注明出处。