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
相关产品推荐
相关产品推荐

