You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP数组按数值从大到小排序结果异常如何正确实现?

问题原因
  • sort()、asort() 是PHP默认的升序排序函数,仅支持从小到大排列,本身不符合从大到小的排序需求。其中sort()会重置数组的数字索引,asort()会保留原有键名,但两者排序方向均为升序。
  • 你得到[6, 100, 1]的异常排序结果,不符合int类型数组升序排序的正常输出(正常升序int数组排序后应为[1, 6, 100]),大概率是实际运行环境中你的数组元素为字符串类型,或排序前数组被其他业务逻辑修改导致。
正确实现方案

按是否需要保留原键分为两种场景选择对应函数即可:

场景1:不需要保留原键名,排序后使用从0开始的连续数字索引

使用降序排序函数rsort(),示例代码:

<?php
$arr = [1, 100, 6];
rsort($arr, SORT_NUMERIC);
var_dump($arr);

运行后输出结果和你的预期完全一致:

array(3) {
  [0]=>
  int(100)
  [1]=>
  int(6)
  [2]=>
  int(1)
}

场景2:需要保留原数组的键名关联关系

使用保留键的降序排序函数arsort(),示例代码:

<?php
$arr = [1, 100, 6];
arsort($arr, SORT_NUMERIC);
var_dump($arr);

运行后输出结果为:

array(3) {
  [1]=>
  int(100)
  [2]=>
  int(6)
  [0]=>
  int(1)
}

内容的提问来源于stack exchange,提问作者Jaquarh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:45:08