Как отсортировать многомерный массив и сохранить ключи в PHP? - PullRequest
1 голос
/ 03 января 2012

У меня есть два массива для сортировки A-> Z, но все числовые индексы необходимо сохранить. Я понятия не имею, как подойти к этой проблеме.

Примечание. В массиве $complex порядок подмассивов не имеет значения, если их связанный ключ сохранен и содержимое подмассива отсортировано.

Все ключи должны быть сохранены в обоих примерах.

<?php

$simple = array(
    20 => 'Hello',
    10 => 'Cat',
    30 => 'Dog'
);


$complex = array(
    30 => array(
        5 => 'foo',
        10 => 'bar'
        ),
    10 => array(
        4 => 'a',
        1 => 'b'
        ),
    20 => array()
);

желаемый вывод

// simple
array(
    10 => Cat,
    30 => Dog,
    20 => Hello
)

// complex; order of top-level indexes (30, 10, and 20) is not important but the key *must* be preserved
array(
    30 => array(
        10 => bar,
        5 => foo,
        ),
    10 => array(
        4 => a,
        1 => b,
        ),
    20 => array()
)

Ответы [ 2 ]

5 голосов
/ 03 января 2012

asort

$simple = array(
    20 => 'Hello',
    10 => 'Cat',
    30 => 'Dog'
);
asort($simple);

$complex = array(
    30 => array(
        5 => 'foo',
        10 => 'bar'
        ),
    10 => array(
        4 => 'a',
        1 => 'b'
        ),
    20 => array()
);
array_walk($complex, 'asort');
print_r($complex);
0 голосов
/ 03 января 2012

Я считаю, что это то, что вы ищете, метод PHP asort:

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

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