- PHPでの多次元配列のソート
- 2011.11.22
1次元配列のソートは「asort」などで可能ですが、多次元配列のソートはこれまで自作の関数を使ってやってましたが、今回めちゃくちゃ簡単にできる「array_multisort」を使用してみました。
たとえば以下のような配列があった場合、volume の降順、 edition の昇順に並べ替える場合の処理の例は・・・
$data[] = array(‘volume’ => 67, ‘edition’ => 2);
$data[] = array(‘volume’ => 86, ‘edition’ => 1);
$data[] = array(‘volume’ => 85, ‘edition’ => 6);
$data[] = array(‘volume’ => 98, ‘edition’ => 2);
$data[] = array(‘volume’ => 86, ‘edition’ => 6);
$data[] = array(‘volume’ => 67, ‘edition’ => 7);// 列方向の配列を得る
foreach ($data as $key => $row) {
$volume[$key] = $row[‘volume’];
$edition[$key] = $row[‘edition’];
}// データを volume の降順、edition の昇順にソートする。
// $data を最後のパラメータとして渡し、同じキーでソートする。
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);これだけでOK!
$dataは参照渡しになるみたいなのでそのまま$dataを使用すればソート済みのデータを扱う事が出来る。 😉【参考】
http://jp2.php.net/array_multisort
【この記事のタグ】