$array = json_decode('[{"3609":1368486012},{"4286":1368546869},{"286":136848555}]',true);
値の降順 (タイムスタンプ) で並べ替える最も効率的な方法は何ですか?
reset
最初の配列要素の値を返します。
コード:
$array = json_decode('[{"3609":1368486012},{"4286":1368546869},{"286":136848555}]',true);
usort($array, function($a, $b) {
return reset($b) - reset($a);
});
var_dump($array);
結果:
array(3) {
[0]=>
array(1) {
[4286]=>
int(1368546869)
}
[1]=>
array(1) {
[3609]=>
int(1368486012)
}
[2]=>
array(1) {
[286]=>
int(136848555)
}
}
注: PHP 5.2を使用している場合は、
$array = json_decode('[{"3609":1368486012},{"4286":1368546869},{"286":136848555}]',true);
function mySort($a, $b) {
return reset($b) - reset($a);
}
usort($array, 'mySort');
var_dump($array);
あ、すみませんfloat
で
比較すると、
function mySort($a, $b) {
if ($a == $b)
return 0;
return ($a < $b) : 1 : -1;
}
または
function mySort($a, $b) {
return sprintf('%E', reset($b) - reset($a));
}