Сортировать многомерный массив по вторичному ключу - PullRequest
0 голосов
/ 09 декабря 2011

Я пытаюсь выяснить правильную функцию в PHP для сортировки многомерного массива. Я подумал сделать foreach и затем использовать ksort (это не сработало). Я думаю, что было бы полезно отметить, что вторичные ключи (числовые) устанавливаются «вручную» (вместо использования array_push, поскольку первый ключ в этом сценарии будет 0 вместо 1).

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

Примечание. Я хочу сохранить для ПЕРВИЧНЫХ ключей (e, g, Main и Promotional) их текущий порядок.

Несортированный массив ...

Array
(
    [Main] => Array
        (
            [3] => Main2
            [2] => Content
            [1] => Main1
        )

    [Promotional] => Array
        (
            [3] => Promotional1
            [2] => Content
            [1] => Promotional2
        )

)

Желаемый результат (сортировка по ключу второго уровня) ...

Array
(
    [Main] => Array
        (
            [1] => Main1
            [2] => Content
            [3] => Main2
        )

    [Promotional] => Array
        (
            [1] => Promotional2
            [2] => Content
            [3] => Promotional1
        )

)

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Вы можете попробовать:

foreach($array as $key => $data) {
  ksort($data);
  $array[$key] = $data;
}
2 голосов
/ 09 декабря 2011

Вы также можете попробовать это:

foreach($array as $key => &$data) {
  ksort($data);
}

амперсанд перед переменной $ data указывает, что переменная $ data является указателем, и любые изменения этой переменной будут каскадно возвращаться к исходной конфигурации.

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