PHPのarray_multisort関数で配列をソート(並び替え)する方法

php

2012年08月01日(水)

  なにが出来るかというと、PHPの配列array()に格納されている配列に、 ソートをかけて並び替えできるわけということです。 array_multisort以外にもソート関数は色々ありますが、 こちらの関数が一番簡単で多様性がありそうですね。         サンプルの配列を作成して実行してみます。 まず1個め。     ■データ
$data = array(
0 => array(
'title' => 'データ3',
'count' => 5,
),
1 => array(
'title' => 'データ1',
'count' => 3,
),
2 => array(
'title' => 'データ2',
'count' => 2,
),
)
    このデータをcountでソートしたい場合は、  
foreach ($data as $v) $count[] = $v[‘count’];
  こちらで$dataの配列のcountを$countに格納します。 そしたらあとは噂のarray_multisort()を実行します。  
array_multisort($count, SORT_DESC, $data);
  これで$dataは以下のようになります。      
array(
0 => array(
'title' => 'データ3',
'count' => 5,
),
1 => array(
'title' => 'データ1',
'count' => 3,
),
2 => array(
'title' => 'データ2',
'count' => 2,
),
)
  となります。 降順ですね。SORT_DESCとやっているのでわかりますね。 逆に昇順であれば、SORT_ASCもしくは引数なしでOKです。  
array_multisort($count, SORT_ASC, $data);
    では今のは数字でのソートなので当たり前と思われるかもしれません。 なので次はtitleの値でソートしてみます。   やり方は同じです。
foreach ($data as $v) $title[] = $v['title'];
array_multisort($title, SORT_ASC, $data);
昇順になりましたね。    
array(
0 => array(
'title' => 'データ1',
'count' => 3,
),
1 => array(
'title' => 'データ2',
'count' => 2,
),
2 => array(
'title' => 'データ3',
'count' => 5,
),
)
  こうなります!! 簡単ですね!     しかもこれ、複数のキーでもソートできます!  
foreach ($data as $v){
$title[] = $v['title'];
$count[] = $v['count'];
}
array_multisort($title, SORT_ASC, ,$count , SORT_ASC, $data);
    まず$titleでソートし、$countでソートします。 とても便利な関数発見しちゃいました!!   是非使ってみてください!   場合によっては、DBでのソートよりも効率的に行って、 処理を早くできるかもしれませんよ! または、DBでの処理に憤りを感じてプログラムだけで行おうと思った際。   これが出来れば色々な事が出来そうですね!!   では!!  

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR