2016-05-12 86 views
-1

我已经将日期转换为Unix时间戳数组,如下所示。使用日期作为键的多维数组排序PHP

Array 
(
    [ONE] => Array 
     (
      [1460581200] => 
      [1460667600] => 
      [0] => 
     ) 

    [TWO] => Array 
     (
      [1465506000] => 
      [1468184400] => 
      [0] => 
      [1470949200] => 
     ) 

) 

我想安排在这个数组内的日期,以便他们可以降序排列而不影响主数组键。

我也希望[0](表示日期不存在)在最上面。

+2

您是否尝试过的东西?这是一个简单的问题,PHP为[数组排序](http://php.net/manual/en/array.sorting.php)提供了很多支持。 – axiac

+0

我以前曾尝试使用kso​​rt和array_multisort。两者都没有工作,因为我会喜欢。 [aslawin](http://stackoverflow.com/users/3233344/aslawin)答案完美。 – user731144

回答

3

试试这个代码:

<?php 

$array = Array 
(
    'ONE' => Array 
     (
      '1460581200' => 'aaa', 
      '1460667600' => 'bbb', 
      '0' => 'ccc', 
     ), 
    'TWO' => Array 
     (
      '1465506000' => 'ddd', 
      '1468184400' => 'eee', 
      '0' => 'fff', 
      '1470949200' => 'ggg', 
     ) 
); 


function sortByKeys($array) 
{ 
    $result = array(); 
    if(isset($array[0])) 
    { 
     $result[0] = $array[0]; 
     unset($array[0]); 
    } 

    krsort($array); 

    return $result + $array; 
} 

$result = array_map('sortByKeys',$array); 

print_r($result); 

Working example

+0

谢谢这完美的工作。 – user731144

+0

干净的解决方案。 – axiac