Как мне сделать сортировку ассоциативного многомерного массива по ключам в PHP? - PullRequest
0 голосов
/ 19 августа 2011

У меня есть следующий массив:

$data['uploads']['ccc'] = 'something';
$data['uploads']['bbb'] = 'something';
$data['uploads']['aaa'] = 'something';
$data['downloads']['ccc'] = 'something';
$data['downloads']['aaa'] = 'something';
$data['downloads']['bbb'] = 'something';

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

$data['downloads']['aaa'] = 'something';
$data['downloads']['bbb'] = 'something';
$data['downloads']['ccc'] = 'something';
$data['uploads']['aaa'] = 'something';
$data['uploads']['bbb'] = 'something';
$data['uploads']['ccc'] = 'something';

Пробовал с различными пользовательскими функциями сортировки, нетудачи .. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 19 августа 2011
ksort($data);

http://php.net/manual/en/function.ksort.php

Также из комментариев в документации PHP:

Вот функция для рекурсивной сортировки многомерных массивов по ключу:

function deep_ksort(&$arr) { 
    ksort($arr); 
    foreach ($arr as &$a) { 
        if (is_array($a) && !empty($a)) { 
            deep_ksort($a); 
        } 
    } 
} 
1 голос
/ 19 августа 2011

Вы можете использовать array_multisort http://www.php.net/manual/en/function.array-multisort.php.

<?php
   $ar = array(
   array("10", 11, 100, 100, "a"),
   array(   1,  2, "2",   3,   1)
  );
  array_multisort($ar[0], SORT_ASC, SORT_STRING,
            $ar[1], SORT_NUMERIC, SORT_DESC);
  var_dump($ar);
 ?>
...