配列をソートする時、
例えば、
$arr_data = array("テストデータ03", "テストデータ02", "テストデータ04", "テストデータ01");
という配列があったとすると、
sort($arr_data);
とすれば昇順に、
rsort($arr_data);
とすれば降順に簡単にソートできます。
これ、
多次元配列も同じようにソートできるの?
となると、
それは無理です。
じゃあ、
多次元配列の時はどうやってソートするのかといえば、
array_multisort()関数を使ってやります。
sort()関数やrsort()関数に比べれば多少面倒ですが、
慣れればそんなに難しいものでもありません。
例えば、
$arr_data = array(
3 => array(
"text" => "テストデータ03",
"modified" => "2012-05-13",
),
4 => array(
"text" => "テストデータ04",
"modified" => "2012-05-14",
),
1 => array(
"text" => "テストデータ01",
"modified" => "2012-05-11",
),
2 => array(
"text" => "テストデータ02",
"modified" => "2012-05-12",
)
);
のような配列データを更新日(modified)順に並べ替えたい時には、
foreach($arr_data as $key => $value){
$modified[$key] = $value["modified"];
}
array_multisort($modified, SORT_DESC, $arr_data);
とするだけです。
要は、
foreach()を使って更新日(modified)の配列を作ってやり、
あとは、
array_multisort()関数に適切にデータをセットして実行するだけ。
これだけで、
多次元配列のソートにも対応できます。
因みに、
データを昇順に並び替えたい場合には、
2番目の引数に「SORT_DESC」ではなく「SORT_ASC」をセットしてやります。
http://blog.quall.net/program/235/
この辺のサイトに書いてくれていることを参考すれば、
多次元配列を複数項目でソートするも簡単にできそうですね!!
この記事へのコメントはありません。