Calendar

<< 11月 >>
 123456
78910111213
14151617181920
21222324252627
282930  

Mobile

  • 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システム開発

【この記事のタグ】
コメント&トラックバック(0)

▲ PAGE TOP