Сортировать многомерный массив по алфавиту - PullRequest
5 голосов
/ 03 апреля 2011

Как мне отсортировать массив по алфавиту:

$allowed = array(
  'pre'    => array(),
  'code'   => array(),
  'a'      => array(
                'href'  => array(),
                'title' => array()
              ),
  'strong' => array(),
  'em'     => array(),
);

// sort($allowed); ?

Ответы [ 4 ]

9 голосов
/ 03 апреля 2011

Aha! Вам нужно uksort();

Сравнение функций сортировки PHP. (полезно для дамбы)

Редактировать: Причина в том, что вы, похоже, тоже хотите сортировать массивы? AFAIK ksort сам по себе этого не делает - он полностью игнорирует значение исходного массива.

Edit2: Это должно работать (хотя вместо kusort используется рекурсия):

<code>function ksort_deep(&$array){
    ksort($array);
    foreach($array as &$value)
        if(is_array($value))
            ksort_deep($value);
}

// example of use:
ksort_deep($allowed);

// see it in action
echo '<pre>'.print_r($allowed,true).'
';

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

4 голосов
/ 03 апреля 2011
2 голосов
/ 03 апреля 2011
bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

как описано здесь .Раздел «Смотрите также» обычно очень полезен

2 голосов
/ 03 апреля 2011

Вы используете

ksort($allowed);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...