我有一个数组,其中有一个带编号的键,后跟一个名称,用这种语法:
[50-Aname] => arraydata
[45-Anothername] => arraydata
[45-Bname] => arraydata
[30-Cname] => arraydata
通过使用krsort(),我可以将数组排序为高分表(向后计数)。但这意味着,如果它们具有相同的数字,Bname将出现在Anothername之前,因为它也按字母顺序排序。
那么,有没有办法将数字从最大到最小排序,但也按字母顺序排序?
答案 0 :(得分:2)
您可以使用uksort()
并将功能定义为您的键的比较器,根据该功能进行排序。
简而言之,该功能应该通过“ - ”拆分键,然后使用2个组件创建总订单。
答案 1 :(得分:1)
对于这种类型的问题,我会将这些数据放入数据库并对其进行排序。
mysql_query("SELECT * FROM table_name ORDER BY score DESC, name ASC");
答案 2 :(得分:0)
在该数组结构上使用ksort()
会产生您想要的结果。我正在运行PHP v5.3.13。
$to_be_sorted = array(
"50-Aname" => 123,
"45-Bname" => 123,
"45-Cname" => 123,
"45-Anothername" => 123,
"30-Cname" => 123
);
ksort($to_be_sorted);
var_dump($to_be_sorted);
结果:
array(5) {
["30-Cname"]=>
int(123)
["45-Anothername"]=>
int(123)
["45-Bname"]=>
int(123)
["45-Cname"]=>
int(123)
["50-Aname"]=>
int(123)
}