У меня есть массив значений типа диапазона 257-1024, 1-256, 1025-2056. Все эти значения динамически генерируются и располагаются случайным образом. Прежде чем сделать вывод, я должен отсортировать их в числовом порядке ASC. Использование функции sort или natsort дает выходные данные как 1-256,1025-2056, 257-1024, так как php распознает их как строку. Есть ли встроенная функция, с помощью которой это можно отсортировать / упорядочить в порядке нумерации, т.е. 1-256, 257-1024, 1025-2056
Ты можешь использовать функция natsort () Вот.
$array = array("257-1024", "1-256", "1025-2056");
$a = natsort($array);
echo "<pre>";
print_r($array);
echo "</pre>";
Выход:
Array
(
[1] => 1-256
[0] => 257-1024
[2] => 1025-2056
)
Надеюсь это поможет.
Вы можете сделать как ниже, используя usort ().
$array = ['257-1024', '1025-2056', '1-256'];
usort($array, function($a, $b){
return ((int)explode('-', $a)[1] < (int)explode('-', $b)[0]) ? -1 : 1;
});
print_r($array);
Выход ниже.
Array
(
[0] => 1-256
[1] => 257-1024
[2] => 1025-2056
)