Calendar

<< 4月  
1234567
891011121314
15161718192021
22232425262728
2930  
  • 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


    →ホームページ制作・WEBシステム開発

【この記事のタグ】

コメントを残す

メールアドレスが公開されることはありません。

▲ PAGE TOP