首先按反向数字排序数组,然后按字母顺序排序?

时间:2012-08-19 23:15:42

标签: php arrays

我有一个数组,其中有一个带编号的键,后跟一个名称,用这种语法:

[50-Aname] => arraydata
[45-Anothername] => arraydata
[45-Bname] => arraydata
[30-Cname] => arraydata

通过使用krsort(),我可以将数组排序为高分表(向后计数)。但这意味着,如果它们具有相同的数字,Bname将出现在Anothername之前,因为它也按字母顺序排序。

那么,有没有办法将数字从最大到最小排序,但也按字母顺序排序?

3 个答案:

答案 0 :(得分:2)

您可以使用uksort()并将功能定义为您的键的比较器,根据该功能进行排序。

简而言之,该功能应该通过“ - ”拆分键,然后使用2个组件创建总订单。

uksort的文档:http://www.php.net/manual/en/function.uksort.php

答案 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)
}