Как упорядочить этот хитрый ассоциативный массив PHP?

Как упорядочить этот хитрый ассоциативный массив PHP?

У меня есть этот ассоциативный массив:

Array (
    [4] => 3
    [2] => 4
    [3] => 1
    [6] => 1
    [1] => 1
)

Мне нужно упорядочить его по ключу с наибольшим значением, НО мне также нужно сохранить ключи с одинаковыми значениями в их первоначальном порядке, поэтому он должен выйти:

Array (
    [2] => 4
    [4] => 3
    [3] => 1
    [6] => 1
    [1] => 1
    )

Я не могу использовать arsort(), потому что он переставляет ключи с одинаковым значением на основе числового порядка ключей, я действительно в недоумении! Какие-либо предложения?


person user2781234    schedule 04.08.2012    source источник


Ответы (1)


natsort для спасения:

$blub = array(4 => 3, 2 => 4, 3 => 1, 6 => 1, 1 => 1);
natsort($blub);
$blub = array_reverse($blub, true);

var_dump($blub);

Это всегда будет выводить:

array(5) { [2]=> int(4) [4]=> int(3) [3]=> int(1) [6]=> int(1) [1]=> int(1) }

natsort, похоже, использует другой алгоритм сортировки, который, к счастью, сохраняет порядок, когда значения совпадают, в отличие от asort. Однако обратите внимание, что из-за этого natsort может работать немного медленнее, чем другие традиционные функции сортировки.

person Mahn    schedule 04.08.2012