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);
值按降序排序,但字符串键会丢失。只剩下带有新数字索引的值。
不区分大小写的排序
将 rsort 与 strcasecmp 结合使用,以实现字符串数组的忽略大小写排序。
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”尽管大小写不同,也能被正确排序。
最佳实践
- 保留键:使用
arsort来保留键值关联。 - 内存使用:请注意
rsort会修改原始数组。 - 自定义排序:对于复杂的排序,请考虑使用
usort。 - 大型数组:对非常大的数据集进行性能测试。
来源
本教程介绍了 PHP 的 rsort 函数,并通过实际示例展示了其在数组降序排序中的用法。
作者
列出 所有 PHP 数组函数。