Код: Выделить всё
$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
)
Ожидаемый результат сортировки по свойствам было бы
Код: Выделить всё
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() сработает тогда, но мне интересно, есть ли такие более простые решения или встроенные в PHP.
Я попробовал https://github.com/awssat/numbered-string-order, который очень интересен, но также не поддерживает десятичные дроби.
Подробнее здесь: https://stackoverflow.com/questions/681 ... mal-values
Мобильная версия