Сортировка массива так, чтобы индекс не двигался?

Как бы я отсортировал массив, так как значения перемещаются, а индекс остается неподвижным. Я написал этот код ниже, хотя ответ, который он дал, не идеален.

$array = array(6,2,22,15,33,40,30,70,65);
asort($array,);
print_r($array);

Теперь это сортирует значения, но индекс перемещается вместе со значением. Я получаю ответ;

Array ( [1] => 2 [0] => 6 [3] => 15 [2] => 22 [6] => 30 [4] => 33 [5] => 40 [8] => 65 [7] => 70 )

Хотя мне бы хотелось, чтобы это показывалось следующим образом;

Array ( [0] => 2 [1] => 6 [2] => 15, etc.

Спасибо!

0

Решение

использование array_combine ()*

Он объединяет два массива в один, используя первый в качестве набора ключей, а второй — в качестве набора значений для нового массива.

Таким образом, в основном вам нужно только получить оригинальные ключи и отсортированные значения, а затем передать их array_combine(),

$a = [
'a' => 'orange',
'b' => 'apple',
'o' => 'banana',
];

$tmp = $a;
sort($tmp);
$result = array_combine(array_keys($a), $tmp);

var_dump($a, $result);

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

Приветствия.


*: доступно из PHP 5.

0

Другие решения

Других решений пока нет …