使用rsort()对索引数组降序排序并重置键,arsort()对关联数组降序排序并保留键值关联,二者均支持SORT_FLAGS参数控制排序行为,如SORT_NATURAL用于自然排序,避免字符串比较错误。

在PHP中,如果你想对数组进行降序排序,主要看你的数组类型:如果是那种普通的索引数组(键是0, 1, 2...这种),
rsort()
arsort()
要实现PHP数组的降序排序,我们主要依赖
rsort()
arsort()
rsort()
<?php $numbers = [10, 5, 20, 15]; rsort($numbers); print_r($numbers); // 输出: Array ( [0] => 20 [1] => 15 [2] => 10 [3] => 5 ) $mixed_values = ['apple', 'orange', 'banana']; rsort($mixed_values); print_r($mixed_values); // 输出: Array ( [0] => orange [1] => banana [2] => apple ) ?>
arsort()
rsort()
立即学习“PHP免费学习笔记(深入)”;
<?php
$grades = [
'Alice' => 85,
'Bob' => 92,
'Charlie' => 78,
'David' => 92
];
arsort($grades);
print_r($grades);
// 输出: Array ( [Bob] => 92 [David] => 92 [Alice] => 85 [Charlie] => 78 )
$products_stock = [
'Laptop' => 50,
'Keyboard' => 120,
'Mouse' => 80
];
arsort($products_stock);
print_r($products_stock);
// 输出: Array ( [Keyboard] => 120 [Mouse] => 80 [Laptop] => 50 )
?>用
rsort()
rsort()
rsort()
<?php $exam_scores = [85, 92, 78, 92, 65]; rsort($exam_scores); print_r($exam_scores); // 输出: Array ( [0] => 92 [1] => 92 [2] => 85 [3] => 78 [4] => 65 ) ?>
但这里有个小细节,我觉得挺值得说道说道的:如果数组里有重复的值,
rsort()
rsort()
rsort()
$sort_flags
SORT_NUMERIC
SORT_STRING
<?php $version_strings = ['v1.10', 'v1.2', 'v1.5']; rsort($version_strings, SORT_STRING); // 默认行为,按字符串比较 print_r($version_strings); // 输出: Array ( [0] => v1.5 [1] => v1.2 [2] => v1.10 ) -- 这可能不是我们想要的自然降序 $version_strings_natural = ['v1.10', 'v1.2', 'v1.5']; rsort($version_strings_natural, SORT_NATURAL); // 使用自然排序 print_r($version_strings_natural); // 输出: Array ( [0] => v1.10 [1] => v1.5 [2] => v1.2 ) -- 这才是我们通常期望的降序 ?>
通过
SORT_NATURAL
轮到关联数组,情况就有点不一样了。我们经常会遇到那种键名有实际意义的数组,比如用户ID对应用户名,或者商品SKU对应库存量。这时候,如果仅仅是按值降序排了,结果把键名给丢了,那可就麻烦大了。
arsort()
arsort()
<?php
$product_sales = [
'apple_iphone' => 1500,
'samsung_galaxy' => 1200,
'xiaomi_mi' => 1800,
'huawei_mate' => 1500
];
arsort($product_sales);
print_r($product_sales);
// 输出: Array ( [xiaomi_mi] => 1800 [apple_iphone] => 1500 [huawei_mate] => 1500 [samsung_galaxy] => 1200 )
?>你看,
xiaomi_mi
apple_iphone
huawei_mate
rsort()
arsort()
uasort()
arsort()
rsort()
arsort()
$sort_flags
说实话,刚开始写PHP的时候,数组排序这块我没少踩坑。你以为很简单,一个函数搞定,结果出来的东西跟你想的不一样。这大部分时候,都跟排序标志(sort flags)以及数据类型有关。
PHP的排序函数,包括
rsort()
arsort()
$sort_flags
SORT_REGULAR
'10'
'2'
'2'
'10'
SORT_NUMERIC
'10'
'2'
SORT_NUMERIC
SORT_STRING
SORT_LOCALE_STRING
SORT_NATURAL
'img1.png'
'img10.png'
'img2.png'
SORT_NATURAL
'img1.png'
'img2.png'
'img10.png'
SORT_FLAG_CASE
SORT_STRING
SORT_NATURAL
举个例子,如果你有一堆版本号字符串:
<?php $versions = ['v1.10', 'v1.2', 'v1.5']; arsort($versions, SORT_STRING); // 默认行为,或者显式指定SORT_STRING print_r($versions); // 输出: Array ( [2] => v1.5 [1] => v1.2 [0] => v1.10 ) -- 这不是我们想要的!因为 '5' > '2' > '1' $versions_natural = ['v1.10', 'v1.2', 'v1.5']; arsort($versions_natural, SORT_NATURAL); print_r($versions_natural); // 输出: Array ( [0] => v1.10 [2] => v1.5 [1] => v1.2 ) -- 这才是我们想要的自然降序! ?>
看到没?一个小小的
SORT_NATURAL
以上就是如何在PHP中对数组进行降序排序?rsort()和arsort()的用法的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号