ZetCode

PHP rsort 函数

最后修改于 2025 年 3 月 13 日

PHP 的 rsort 函数以降序对数组进行排序。它会修改原始数组并返回一个布尔值,指示成功与否。

基本定义

rsort 函数按值对数组进行反向排序。它会为关联数组保留键值关联,但会重置数字键。

语法:rsort(array &$array, int $flags = SORT_REGULAR): bool。该函数成功时返回 true,失败时返回 false。数组是通过引用传递的。

基本 rsort 示例

这演示了如何以降序对简单的数字数组进行排序。

basic_rsort.php
<?php

$numbers = [3, 1, 4, 1, 5, 9, 2, 6];
rsort($numbers);

print_r($numbers);

数组从最高值排序到最低值。原始数组会被修改,数字键会从 0 开始重新索引。

使用 rsort 对字符串进行排序

rsort 函数也可以按字母反序对字符串数组进行排序。

string_rsort.php
<?php

$fruits = ["apple", "Orange", "banana", "cherry"];
rsort($fruits);

print_r($fruits);

字符串按字母反序排序。请注意,在 ASCII 顺序中,大写字母在前,小写字母在后,这会影响排序结果。

使用排序标志

第二个参数允许使用各种标志指定排序行为。

rsort_flags.php
<?php

$mixed = ["10", 2, "1", 20];
rsort($mixed, SORT_NUMERIC);

print_r($mixed);

使用 SORT_NUMERIC 在比较时将值视为数字。字符串数字会被转换为数值,以便进行正确的数值排序。

关联数组行为

对于关联数组,rsort 会保留值-键关联,但会重置数字键。

assoc_rsort.php
<?php

$prices = [
    "apple" => 1.2,
    "banana" => 0.5,
    "orange" => 0.8
];
rsort($prices);

print_r($prices);

值按降序排序,但字符串键会丢失。只剩下带有新数字索引的值。

不区分大小写的排序

rsortstrcasecmp 结合使用,以实现字符串数组的忽略大小写排序。

case_insensitive_rsort.php
<?php

$words = ["Apple", "banana", "cherry", "apricot"];
rsort($words, SORT_STRING | SORT_FLAG_CASE);

print_r($words);

SORT_FLAG_CASE 标志使排序忽略大小写。“Apple”和“apricot”尽管大小写不同,也能被正确排序。

最佳实践

来源

PHP rsort 文档

本教程介绍了 PHP 的 rsort 函数,并通过实际示例展示了其在数组降序排序中的用法。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年起就开始撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 数组函数