Это должно работать для вас:
Здесь я простой цикл по всем элементам $array
и сохранить их сортируют в $sorted
. В первом случае if я проверяю, является ли массив $sorted
пустым ИЛИ текущий элемент $array
больше, чем последний элемент отсортированного массива. Если это правда, я просто добавляю элемент в конец к массиву $sorted
.
E.g. (Псевдо-код):
empty($sorted) || end($sorted) < current($array)
В противном случае я ввожу еще часть, где я цикл через $sorted
массив, чтобы найти место, где текущий элемент $sorted
меньше текущего элемента $array
И следующий элемент $sorted
больше, чем текущий элемент $array
(так сказать, чтобы найти место, где текущий элемент $array
должен пройти между ними).
например (псевдо-код):
current($sorted) < current($array) && next(current($sorted)) > current($array)
И если это так, я первый отрезать часть от текущего элемента массива $sorted
и сохранить его в переменной TMP. Затем я добавляю текущий элемент из $array
, а затем добавлю часть, которую я отрезаю снова в конце массива $sorted
.
<?php
$array = [
'a' => '1',
'r' => '8',
'g' => '5',
'f' => '3',
's' => '2',
];
$sorted = [];
$keys = array_keys($array);
for($count = 0; $count < count($array); $count++) {
$tmpKeys = array_keys($sorted);
if(empty($sorted) || $sorted[$tmpKeys[count($sorted)-1]] < $array[$keys[$count]]) {
$sorted[$keys[$count]] = $array[$keys[$count]];
} else {
for($innerCount = 0; $innerCount < count($sorted)-1; $innerCount++) {
if($sorted[$tmpKeys[$innerCount]] < $array[$keys[$count]] && $array[$keys[$count]] < $sorted[$tmpKeys[$innerCount+1]]) {
$tmp = array_splice($sorted, $innerCount+1);
$sorted[$keys[$count]] = $array[$keys[$count]];
$sorted = array_merge($sorted, $tmp);
}
}
}
}
print_r($array);
print_r($sorted);
?>
Выход:
Array ([a] => 1 [r] => 8 [g] => 5 [f] => 3 [s] => 2)
Array ([a] => 1 [s] => 2 [f] => 3 [g] => 5 [r] => 8)
Я не могу понять ваш вопрос правильно. Можете ли вы, пожалуйста, прояснить мне. Благодарю вас. –
Почему вы не хотите использовать такие методы? 'asort ($ array);' кажется намного проще. – rjdown
массив, который встроен в код, я хочу сортировать по номерам, убывающим при сохранении ассоциаций и делать это без использования метода asort ($ array), который я допускаю, облегчает его. – DonLeo17