2013-05-23 2 views
-7

У меня есть вложенный ассоциативный массив, подобный приведенному ниже, и ему нужна помощь в сортировке массива для каждого из ключей, таких как «first_name» и «score».В PHP, как сортировать сортировку ассоциативных массивов на основе ключа

Например:

Array 
(
    [12345] => Array 
     (
      [75] => Array 
       (
        [first_name] => Xen 
        [score] => 245 
       ) 
     ) 

    [9876] => Array 
     (
      [75] => Array 
       (
        [first_name] => Shane 
        [score] => 300 
       ) 
     ) 
    [4567] => Array 
     (
      [75] => Array 
       (
        [first_name] => Dan 
        [score] => 100 
       ) 
     ) 
) 

Результат должен иметь массив, отсортированный по ключам в порядке возрастания:

Array 
(
    [first_name] => Array 
       (
        [0] => 4567 
        [1] => 9876 
        [2] => 12345 
       ) 

    [score] => Array 
      (
      [0] => 4567 
      [1] => 12345 
      [2] => 9876 
      ) 
) 
+3

Почему я downvoted этот вопрос: http://meta.stackexchange.com/a/149138/133242 –

+3

Там несколько bajillion д/а на этом сайте о том, как сортировать массивы в любом случае можно вообразить ... занять несколько минут, чтобы осмотреться. –

+0

'ksort', что мать – Orangepill

ответ

1

ksort является функцией PHP для сортировки по ключу. Таким образом, для сортировки массива $arr своими ключами, сделайте следующее:

ksort($arr); 

Обратите внимание, что ksort возвращает логическое значение (успех или неудача), так что вы не должны делать $arr = ksort($arr);. ksort изменяет исходный массив.

Чтобы сортировать многомерный ассоциативный массив (скажем, ассоциативный массив ассоциативных массивов) рекурсивно с помощью ключей, попробуйте предоставленную пользователем функцию в нижней части справочной страницы ksort (я не пробовал это, но это выглядит так: он будет работать нормально):

function deep_ksort(&$arr) { 
    ksort($arr); 
    foreach ($arr as &$a) { 
     if (is_array($a) && !empty($a)) { 
      deep_ksort($a); 
     } 
    } 
} 
+0

Спасибо, что указали это .. попытается использовать это на нескольких ключах. – user1971065

+0

http://www.php.net/manual/en/function.ksort.php#98465 также представляется возможным решением. – user1971065

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