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

  • 投稿日:
  • by
  • カテゴリ:

PHPメモ。

1次元配列のソートは「asort」などで可能ですが、多次元配列の場合、「array_multisort」を使用します。

例:たとえば、次の多次元配列があった場合を考える。

$data = array(
[0] => array(
"foo" => 10,
"bar" => 5,
"hoge" => 7
),
[1] => array(
"foo" => 8,
"bar" => 6,
"hoge" => 1
),
[2] => array(
"foo" => 10,
"bar" => 5,
"hoge" => 7
)
);

たとえば、列「foo」の値でソートしたい場合、

foreach($data as $key => $row){
$foo[$key] = $row["foo"];
}

array_multisort($foo,SORT_DESC,$data);

となる。

さらに、「foo」をソートし、さらに「bar」をソートし、さらには「hoge」でソートしたい場合は、以下のようになる。

foreach($data as $key => $row){
$foo[$key] = $row["foo"];
$bar[$key] = $row["bar"];
$hoge[$key] = $row["hoge"];
}

array_multisort($foo,SORT_DESC,$bar,SORT_DESC,$hoge,SORT_DESC,$data);

う~ん、便利な関数があるもんですね。