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

PHP中使用rsort排序数组后丢失键名的解决方法

解决PHP排序后保留数组键名的问题

嘿,这个问题太常见啦!你现在用的rsort()函数确实会在对数组做降序排序的同时,重置数组索引(直接丢掉原来的自定义键名),这就是为啥输出里的键全变成0、1、2...的原因。

要保留原有的键名和对应值的关联关系,只需要把rsort()换成arsort()就搞定了!arsort()的作用就是对数组进行降序排序,同时完整保留键值对的映射关系,完美匹配你的需求。

修改后的代码

$list_array = array("a1"=>$a1,"a2"=>$a2,"a3"=>$a3,"a4"=>$a4,"a5"=>$a5,"a6"=>$a6,"a7"=>$a7,"a8"=>$a8,"a9"=>$a9,"a10"=>$a10,"a11"=>$a11,"a12"=>$a12,"a13"=>$a13,"a14"=>$a14,"a15"=>$a15,"a16"=>$a16, "a17"=>$a17,"a18"=>$a18,"a19"=>$a19,"a20"=>$a20,"a21"=>$a21);
arsort( $list_array, SORT_NUMERIC );
print_r( $list_array );

效果说明

执行修改后的代码后,输出的数组会保留原来的a1、a2...a21这些键名,同时值依然按照从大到小的数值顺序排列,比如类似这样的结构:

Array ( [aX] => 32.87 [aY] => 8.48 [aZ] => 8.34 ... [aN] => 0 )

顺便补个小知识点:如果之后需要升序排序且保留键名,可以用asort()函数,用法和arsort()完全一致~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:32:57