Естественная сортировкаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Естественная сортировка

Сообщение Anonymous »

Я хочу отсортировать массив чисел в естественном порядке, чтобы числа с большим значением следовали за меньшими, например:

Код: Выделить всё

$numbers = array('10 Apple', '2 Grapes', '3 Apples', '3.2 Apples', '3.1 Apples', '3.3 Apples', '3.10 Apples', '3.11 Apples', 'Lots of Apples');
natsort($numbers);
Это то, что я получаю в качестве результата, а это не тот результат, который мне нужен, десятичные дроби не подвергаются корректной угрозе.

Код: Выделить всё

print_r($numbers);
Array
(
[1] => 2 Grapes
[2] => 3 Apples
[4] => 3.1 Apples
[3] => 3.2 Apples
[5] => 3.3 Apples
[6] => 3.10 Apples
[7] => 3.11 Apples
[0] => 10 Apple
[8] => Lots of Apples
)
Похожий вопрос «Сортировка массивов в PHP для десятичных значений» уже существовал, но подходящего ответа там не найдено.
Ожидаемый результат сортировки по свойствам было бы

Код: Выделить всё

Array
(
[1] => 2 Grapes
[2] => 3 Apples
[4] => 3.1 Apples
[6] => 3.10 Apples
[7] => 3.11 Apples
[3] => 3.2 Apples
[5] => 3.3 Apples
[0] => 10 Apple
[8] => Lots of Apples
)
Так что я ожидал, что natsort() сделает именно это, но похоже, что это ошибка, и мне придется реализовать аналогичную логику самостоятельно? Это правильно?
Одно из решений, о котором я думаю, — это каким-то образом переформатировать числа с фиксированной точностью и надеяться, что natsort() сработает тогда, но мне интересно, есть ли такие более простые решения или встроенные в PHP.
Я попробовал https://github.com/awssat/numbered-string-order, который очень интересен, но также не поддерживает десятичные дроби.

Подробнее здесь: https://stackoverflow.com/questions/681 ... mal-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»