按值重新排序2D数组

时间:2013-05-14 16:41:12

标签: php arrays

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

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

1 个答案:

答案 0 :(得分: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);

哦,对不起 如果您比较浮动

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));
}