2017-04-24 8 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