データベースから取得したデータを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' );
簡単ですね!