Home > PHP

多次元配列を指定の箇所でソート

2011.01.20 16:38
 array_multisortという関数。なんつー便利な言語なんですかね。PHP。多次元配列を指定の値でソートできちゃうんですね。これ、なんというかプログラマーを限りなくバカにするというか、バカでもできるというか、そもそもプログラマーはバカだったというか、びっくりしました。
 例えば、ある多次元配列があるとします。この度使ったのは、それそれの配列にデータベースのレコードが入っているというものでした。
$listという2次元配列だったとして、
array {
          [0] = array {
                           ["number"] = 4
                           ["name"] = メルセデス
   }
         [1] = array {
                          ["number"] = 22
                          ["name"] = アウディー
   }
         [2] = array {
                          ["number"] = 7
                          ["name"] = フォルクスワーゲン
         }
}
こんな具合の配列の、これらを["number"]のところでソートしたいとします。直感的にはメルセデス、フォルクスワーゲン、アウディーでソートしたいという感じです。こういう場合には、array_multisortという便利な関数があるんです。
foreach ( $list as $key => $record){
     $number[$key] = $record["number"];
}
array_multisort($temp, SORT_DESC, SORT_NUMERIC, $list);
こんな具合です。これでnumberのところでソートされます。かなり簡単。バブルソートとか自分で実装しないとダメかと思ったけど大丈夫でした。
 さらに複数の要素でソートしたい場合も(この2次元配列では意味がありませんが、)
foreach ( $list as $key => $record){
     $number[$key] = $record["number"];
     $name[$key] = $record["name"];
}
array_multisort($temp, SORT_DESC, $list);
とかいう風に連続してソートがかけられます。これ便利ですね。でも何故だかあんまりメジャーじゃないです。









プロフィール



  • Name :: 山上オサム ♂(39)
  • Hobby :: 武術
  • Work :: Web Designer