PHP Сортировать массив значений диапазона строк в числовом порядке

У меня есть массив значений типа диапазона 257-1024, 1-256, 1025-2056. Все эти значения динамически генерируются и располагаются случайным образом. Прежде чем сделать вывод, я должен отсортировать их в числовом порядке ASC. Использование функции sort или natsort дает выходные данные как 1-256,1025-2056, 257-1024, так как php распознает их как строку. Есть ли встроенная функция, с помощью которой это можно отсортировать / упорядочить в порядке нумерации, т.е. 1-256, 257-1024, 1025-2056

1

Решение

Ты можешь использовать функция 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
)

Надеюсь это поможет.

1

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

Вы можете сделать как ниже, используя 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
)
0

По вопросам рекламы [email protected]