PHPプログラムに関する各種メモ書き

PHPで多次元配列(ハッシュの配列)を並び替える、またはランダム順にする。

データベースから取得したデータをPHP内で並べ替えたり、ランダムに並び替えたい時があります。 関数【array_multisort】を使ってタイトルでソートするには以下のようにすればOKです。

$loop = array(
    array(
        'id' => 1,
        'title' => 'あいうえお',
    ),
    array(
        'id' => 2,
        'title' => 'かきくけこ',
    ),
    array(
        'id' => 3,
        'title' => 'さしすせそ',
    ),
);
$ids = array();
foreach ($loop as $value) {
    array_push($ids,$value['title']);
}
// shuffle($ids);   // もしランダムにソートする場合はこのコメントアウトを解除する
array_multisort($ids, SORT_DESC, $loop);

実際には次のように実装します

    /**
     * このメソッドはハッシュの配列を任意のカラムでソートします(大きい順 DESC )
     *
     * @param   array       $loop
     * @param   string      $column_name
     *
     * @return  array       $loop
     */
    public function loop_sort( $loop, $column_name ){
        $ids = array();
        foreach ($loop as $value) {
            array_push($ids,$value[$column_name]);
        }
        array_multisort($ids, SORT_DESC, $loop); // 小さい順にする時は SORT_ASC
        return $loop;
    }

次のように呼び出します。(titleでソートする場合)

$sorted_loop = $this->loop_sort( $original_loop, 'title' );

簡単ですね!

関連エントリー

No.775
07/10 17:45

edit

配列
ソート