PHP

【PHP】array_multisort()関数を使って多次元配列をソートしてみる

【PHP】array_multisort()関数を使って多次元配列をソートしてみる

例えば、
$arr = array(“テストデータ03″,”テストデータ02″,”テストデータ01”);
という配列があったとすると、

この配列をソートする場合、
sort($arr);
とすれば昇順に、

rsort($arr);
とすれば降順にソートできます。

 

これ、多次元配列も同じようにソートできるの?

となると、それは無理です。

 

じゃあ、多次元配列の時はどうやってソートするのかといえば、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」をセットしてやります。