当前位置:首页 > PHP

php排序的实现

2026-02-16 15:04:08PHP

数组排序函数

PHP提供了多种内置函数用于数组排序,适用于不同场景:

  • sort():对数组升序排序(值重排,键重置为数字索引)
  • rsort():对数组降序排序
  • asort():保持键值关联的升序排序
  • arsort():保持键值关联的降序排序
  • ksort():按键名升序排序
  • krsort():按键名降序排序
$numbers = [3, 1, 4];
sort($numbers); // 结果: [1, 3, 4]

自定义排序

使用usort()uasort()uksort()实现自定义排序逻辑,需提供比较函数:

php排序的实现

function compareLength($a, $b) {
    return strlen($a) - strlen($b);
}

$words = ["apple", "banana", "cherry"];
usort($words, "compareLength"); 
// 结果: ["apple", "cherry", "banana"]

多维度数组排序

对多维数组排序可通过自定义比较函数实现:

$users = [
    ['name' => 'Alice', 'age' => 25],
    ['name' => 'Bob', 'age' => 30]
];

usort($users, function($a, $b) {
    return $a['age'] <=> $b['age'];
});

自然排序

natsort()实现自然顺序排序(如:img1, img2, img10):

php排序的实现

$files = ["img12", "img10"];
natsort($files); // 结果: ["img10", "img12"]

对象排序

使用usort()配合对象属性比较:

class User {
    public $age;
}

$users = [new User(25), new User(30)];
usort($users, fn($a, $b) => $a->age <=> $b->age);

稳定排序实现

PHP原生排序非稳定,可通过保留原索引实现稳定排序:

function stableSort($array, $cmp) {
    $indexed = array_map(fn($v, $i) => [$v, $i], $array, array_keys($array));
    usort($indexed, fn($a, $b) => $cmp($a[0], $b[0]) ?: $a[1] <=> $b[1]);
    return array_column($indexed, 0);
}

性能注意事项

  • 大数组推荐使用SplHeapSplPriorityQueue
  • 排序前考虑是否需要保留原数组键值关系
  • 复杂排序条件可结合array_multisort()实现

标签: php
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP实现打印功能的方法 在PHP中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现apk下载

php实现apk下载

实现APK下载的PHP代码 创建一个简单的PHP脚本来处理APK文件的下载请求,确保文件传输正确且安全。 <?php $file = 'path/to/your/app.apk'; if (f…

php 实现聊天功能

php 实现聊天功能

PHP 实现聊天功能的方法 使用 WebSocket 和 Ratchet 库 WebSocket 是实现实时聊天的理想选择。Ratchet 是一个 PHP 库,用于处理 WebSocket 连接。…

php 实现多继承

php 实现多继承

在PHP中,原生不支持多继承,但可以通过以下几种方法模拟实现类似多继承的功能: 使用 trait Trait是PHP 5.4引入的特性,允许在类中复用代码片段,可以视为一种轻量级的继承机制。一个类可…

php 实现表单验证

php 实现表单验证

表单验证基础方法 使用内置函数和条件判断进行基础验证,例如检查空值、长度限制等: $name = $_POST['name'] ?? ''; $email = $_POST['email'] ??…