-2
$array = json_decode('[{"3609":1368486012},{"4286":1368546869},{"286":136848555}]',true);

按值递减(时间戳)重新排序的最有效方法是什么?

4

1 回答 1

3

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));
}
于 2013-05-14T16:55:56.340 回答