2016-05-12 3 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

Я ранее пытался использовать ksort и 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

Смежные вопросы