array_multisortが意外と便利
最近はPHPを使う機会が多いので、ちょっと勉強になった便利な関数をメモ。
array_multisortは、多次元配列のキーを自由に変えてソート出来る便利な関数です。
どのように便利かというと、結構良くあるのが名前順・価格順・最新日付順とかリンクになってて、それを押すとソートするような作り方をしている場合。
そのリンクが押されたら、押されたボタンの値をキーとして、ソートするだけなのですが、それをやろうとすると意外と困るのですが、array_multisortを使えば非常に簡単に出来ます。
コードは以下のような感じで、name、price、dateをキーに持った配列で、priceでソートしています。
$item_ary[] = array( "name" => "鞄", "price" => 20000, "date" => "2008/01/01" ); $item_ary[] = array( "name" => "靴", "price" => 10000, "date" => "2008/02/01" ); $item_ary[] = array( "name" => "服", "price" => 30000, "date" => "2008/03/01" ); $price_ary = array(); foreach ($item_ary as $key => $val) { $price_ary[$key] = $val['price']; } array_multisort($price_ary, SORT_ASC, $item_ary);
こうすれば、金額の安い順にソートされます。
もちろんSORT_DESCとすれば、降順にも出来ます。
一度、ソートしたいものを配列にまとめるというのが肝ですね。
これを使うことで、多次元配列のソート楽ちんですね。