Многосортный массив php не дал правильных результатов, когда ключ содержит комбинацию целых чисел и строк - PullRequest
0 голосов
/ 06 января 2019

Я хочу отсортировать массив по возрастанию ключей и по убыванию значений

ниже мой массив перед сортировкой

[undefined] => 166
[template] => 2
[indesign] => 1
[product] => 1
[2] => 3
[4] => 3
[66] => 2
[34] => 1
[2222] => 1

Я использовал приведенный ниже код для сортировки

 array_multisort(array_values($data), SORT_DESC, array_keys($data), SORT_ASC, $data);

вот отсортированный вывод

   [undefined] => 166
    [0] => 3
    [1] => 3
    [template] => 2
    [2] => 2
    [indesign] => 1
    [product] => 1
    [3] => 1
    [4] => 1

ключи с целыми числами изменились. Как мне это преодолеть?

1 Ответ

0 голосов
/ 06 января 2019

Код:

$keys = array_keys($array);
$values = array_values($array);

array_multisort($values, SORT_DESC, $keys, SORT_ASC | SORT_NATURAL);

$result = array_combine($keys, $values);

Выход:

Array
(
    [undefined] => 166
    [2] => 3
    [4] => 3
    [66] => 2
    [template] => 2
    [34] => 1
    [2222] => 1
    [indesign] => 1
    [product] => 1
)
...