1

この構文では、番号付きのキーとそれに続く名前を持つ配列があります。

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

krsort()を使用することで、配列をハイスコアテーブルとしてソートすることができます(逆方向にカウント)。ただし、同じ番号の場合、アルファベット順も逆になっているため、BnameはAnothernameの前に表示されます。

それで、数字を最大から最小に並べ替える方法はありますが、アルファベット順に並べ替えることもできますか?

4

3 に答える 3

2

uksort()ソートが実行されるキーのコンパレータとして関数を使用および定義できます。

つまり、その関数はキーを「-」で分割し、2 つのコンポーネントを使用して合計注文を作成する必要があります。

ドキュメントuksort: http://www.php.net/manual/en/function.uksort.php

于 2012-08-19T23:22:54.260 に答える
1

このタイプの問題については、それらのデータをデータベースに入れてソートします。

 mysql_query("SELECT * FROM table_name ORDER BY score DESC, name ASC");
于 2012-08-20T00:16:44.383 に答える
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)
}
于 2012-08-19T23:33:53.810 に答える