当前位置:首页 > PHP

php实现排序

2026-01-13 13:30:00PHP

PHP 数组排序方法

PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法:

按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用):

$numbers = [3, 1, 4];
sort($numbers);
print_r($numbers); // 输出: [1, 3, 4]

按值降序排序 rsort() 函数对数组按值降序排序,重置键名:

$numbers = [3, 1, 4];
rsort($numbers);
print_r($numbers); // 输出: [4, 3, 1]

按键升序排序 ksort() 函数对关联数组按键名升序排序,保留键值关联:

$age = ["Peter"=>35, "Ben"=>20];
ksort($age);
print_r($age); // 输出: ["Ben"=>20, "Peter"=>35]

按键降序排序 krsort() 函数对关联数组按键名降序排序:

$age = ["Peter"=>35, "Ben"=>20];
krsort($age);
print_r($age); // 输出: ["Peter"=>35, "Ben"=>20]

保持键值关联的按值排序 asort() 函数对关联数组按值升序排序,保留键值关联:

$age = ["Peter"=>35, "Ben"=>20];
asort($age);
print_r($age); // 输出: ["Ben"=>20, "Peter"=>35]

保持键值关联的按值降序排序 arsort() 函数对关联数组按值降序排序:

$age = ["Peter"=>35, "Ben"=>20];
arsort($age);
print_r($age); // 输出: ["Peter"=>35, "Ben"=>20]

自定义排序

使用 usort() 自定义比较逻辑 通过回调函数定义排序规则(适用于复杂排序需求):

function cmp($a, $b) {
    if ($a == $b) return 0;
    return ($a < $b) ? -1 : 1;
}
$numbers = [3, 1, 4];
usort($numbers, "cmp");
print_r($numbers); // 输出: [1, 3, 4]

多条件排序示例 结合多个字段进行排序(如先按年龄升序,再按姓名降序):

$users = [
    ['name' => 'Alice', 'age' => 28],
    ['name' => 'Bob', 'age' => 22],
    ['name' => 'Charlie', 'age' => 28]
];
usort($users, function($a, $b) {
    if ($a['age'] == $b['age']) {
        return strcmp($b['name'], $a['name']);
    }
    return $a['age'] - $b['age'];
});
print_r($users);

自然排序

natsort() 自然顺序排序 处理包含数字的字符串时按人类直觉排序(如 "img2" 排在 "img10" 前):

$files = ["img12", "img10", "img2"];
natsort($files);
print_r($files); // 输出: ["img2", "img10", "img12"]

多维数组排序

使用 array_multisort() 对多维数组按某一列排序:

$data = [
    ['name' => 'Tom', 'score' => 80],
    ['name' => 'Ann', 'score' => 95],
    ['name' => 'Sam', 'score' => 75]
];
$scores = array_column($data, 'score');
array_multisort($scores, SORT_DESC, $data);
print_r($data);

注意事项

  • 排序函数直接修改原数组,而非返回新数组
  • 关联数组排序时注意选择是否保留键值关联(asort/ksort 系列)
  • 对大型数据集建议使用 usort 而非 sort,后者可能更高效

php实现排序

标签: php
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (H…

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (in…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…