PHPで多次元配列をソートする

プログラミング

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とすれば、降順にも出来ます。

ポイント

一度、ソートしたいものを配列にまとめるというのが肝ですね。
これを使うことで、多次元配列のソート楽ちんですね。

コメントを残す