多次元配列をソートする(PHP)
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);
う~ん、便利な関数があるもんですね。

コメントする