2017-04-24 73 views
0

这是我有数组:阵列关键是在多维数组associaltive失去排序

Array 
      (
       [02nd Apr-04th Apr] => Array 
        (
         [facebook] => 0 
         [youtube] => 9 
         [timestamp] => 1491177600 
        ) 

       [03rd Mar-05th Mar] => Array 
        (
         [facebook] => 0 
         [youtube] => 0 
         [timestamp] => 1488672000 
        ) 

) 

我想通过“时间戳”值进行排序这一点。因此,预期输出是:

Array 
      (
       [03rd Mar-05th Mar] => Array 
        (
         [facebook] => 0 
         [youtube] => 0 
         [timestamp] => 1488672000 
        ) 
       [02nd Apr-04th Apr] => Array 
        (
         [facebook] => 0 
         [youtube] => 9 
         [timestamp] => 1491177600 
        ) 

) 

我做了什么:

usort($array, function($a, $b) { 
       if ($a['timestamp'] == $b['timestamp']) { 
        return 0; 
       } 
       return ($a['timestamp'] < $b['timestamp']) ? -1 : 1; 
}) 

当我这样做,排序工作,但该阵列钥匙丢失。这是我得到的结果是:

Array 
      (
       [0] => Array 
        (
         [facebook] => 0 
         [youtube] => 0 
         [timestamp] => 1488672000 
        ) 
       [1] => Array 
        (
         [facebook] => 0 
         [youtube] => 9 
         [timestamp] => 1491177600 
        ) 

) 
+0

这里的东西,你可以使用http://php.net/uasort –

回答

2

使用uasort

uasort($array, function($a, $b) { 
       if ($a['timestamp'] == $b['timestamp']) { 
        return 0; 
       } 
       return ($a['timestamp'] < $b['timestamp']) ? -1 : 1; 
}) 
0

usort不能保持键,使用uasort来代替它。并且您可以使用< =>来简化您的比较功能。

uasort($array, function($a, $b) { 
    return ($a['timestamp'] <=> $b['timestamp']); 
}) 
+2

其价值当你使用PHP7只有语法提 – DevDonkey