Сортировка массива по значениям с сохранением ключевого порядка - PullRequest
0 голосов
/ 07 августа 2020

У меня есть массив, который выглядит так:

$array = array(
'5' => 2,
'6' => 3,
'7' => 10,
'8' => 1
);    

, и я хочу, чтобы он выглядел так:

$array = array(
'5' => 1,
'6' => 2,
'7' => 3,
'8' => 10
);

Ключи должны оставаться такими же, но значения должны быть заказал по возрастанию. С помощью sort () ключи будут удалены и заменены ключами, начинающимися с 0. asort () упорядочит значения так, как я хочу, но сохранит ассоциацию индекса. Я пробовал sort, usort, asort, но мне кажется, что это не та функция порядка, которая мне нужна. Нужно ли мне сортировать вручную или есть функция, которую я могу использовать?

Заранее благодарим за любую подсказку.

1 Ответ

5 голосов
/ 07 августа 2020

Вы можете извлечь ключи вашего массива, используя array_keys, отсортировать значения, используя sort, а затем объединить ключи обратно с отсортированными значениями, используя array_combine:

$array = array(
'5' => 2,
'6' => 3,
'7' => 10,
'8' => 1
);  
$keys = array_keys($array);
sort($array);
$array = array_combine($keys, $array);
print_r($array);

Вывод:

Array
(
    [5] => 1
    [6] => 2
    [7] => 3
    [8] => 10
)

Демо на 3v4l.org

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