連想配列を日付でソートするときはarray_multisort()を使う PHP

日付で配列のソートをしたいが・・・

更新日時順に返ってくる仕様のはずだったとあるAPIがいつのまにか仕様が変わり、、、jsonで返ってくる値にデータの更新日時があるのに、
なぜか五十音順で返ってくる仕様になっていました。curlでとってきたjsonデータをjson_decodeして配列に入れてみたら、もはや五十音順ですらなく、いったいどういう順番で返ってきているのかが謎。信じられるのはデータの更新日時だけ。

配列の中身を日時でソートできる都合のいい関数なんてないよね・・・と思ってぐぐったら

あった




連想配列を日付でソートするときはarray_multisort()を使う PHP

phpのドキュメントはこちら。
PHP:array_multisort

<?php
$arr_data = array(
[0] => array(
"updated" => 2014-01-11,
"val" => "aaaa",
),
[1] => array(
"updated" => 2014-01-27,
"val" => "cccc",
),
[2] => array(
"updated" => 2014-01-21,
"val" => "bbbb",
)
);
foreach($arr_data as $key => $val){
  //updatedでソートする準備
$updated[$key] = $val["updated"];
}
//配列のkeyのupdatedでソート
array_multisort($updated, SORT_DESC, $arr_data);
?>

これで$arr_dataはupadatedの降順でソートされましたとさ。
便利〜。

array_multisort忘れないようにしよ。

【参考】
QUALL 多次元配列のソート(array_multisort)について[PHP]

※この記事は2017年10月に修正・加筆しました。