2015-05-30 4 views
2

Я хочу отсортировать мой массив на основе ключа (который является датой) - предпочтительнее как ASC, так и DESC.Сортировка многомерного массива - сохранение значений ключей

Я попытался использовать несколько методов на SO, но продолжаю получать плохие результаты - поэтому я подумал, что снова задам вопрос.

У меня есть этот массив:

Array 
(
    [2015-05-29] => Array 
     (
      [a] => 13 
      [b] => 1 
      [c] => 12 
     ) 

    [2015-05-28] => Array 
     (
      [a] => 10 
      [b] => 1 
      [c] => 1 
     ) 

    [2015-05-27] => Array 
     (
      [a] => 2 
     ) 

    [2015-05-30] => Array 
     (
      [b] => 24 
      [c] => 25 
     ) 

) 

Я использую эту функцию - которая должна работать в соответствии с несколько постов:

uasort($days, function($a, $b) { 
    return $a['points'] - $b['points']; 
}); 

Но это не так, как массив получает возвращается, как это:

Array 
    (
     [2015-05-30] => Array 
      (
       [b] => 24 
       [c] => 25 
      ) 

     [2015-05-27] => Array 
      (
       [a] => 2 
      ) 

     [2015-05-28] => Array 
      (
       [a] => 10 
       [b] => 1 
       [c] => 1 
      ) 

     [2015-05-29] => Array 
      (
       [a] => 13 
       [b] => 1 
       [c] => 12 
      ) 

    ) 

Я хочу иметь массив возвращается, как это:

Array 
(
    [2015-05-27] => Array 
     (
      [a] => 2 
     ) 

    [2015-05-28] => Array 
     (
      [a] => 10 
      [b] => 1 
      [c] => 1 
     ) 

    [2015-05-29] => Array 
     (
      [a] => 13 
      [b] => 1 
      [c] => 12 
     ) 

    [2015-05-30] => Array 
     (
      [b] => 24 
      [c] => 25 
     ) 

) 

или в обратном порядке!

Кто может помочь мне решить эту проблему?

+1

1) Опубликуйте свой ожидаемый результат. 2) Отправьте исходный массив. 3) Не удается найти '$ a ['points']' внутри массива? Что это значит на самом деле? –

+0

@taapo Вы можете отсортировать его с помощью естественного заказа, посмотрите документацию http://php.net/manual/en/function.natsort.php и пример http://stackoverflow.com/questions/5167928/what-is-natural-ordering-when-we-talk-about-sorting –

ответ

4

Вам не нужна какая-либо функция сортировки. Просто используйте ksort()/krsort(), .e.g.

//ASC   //DESC 
ksort($arr); //krsort($arr); 
+0

Да, это сработает для него, если OP только нуждается в сортировке ключей, содержащих дату –

+0

@Uchiha Как я прочитал вопрос, это то, что OP хочет и с добавленным ожидаемым выходом 'ksort()' является тем, что он ищет – Rizier123

+0

Да, вы правы. + 1 –

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