【问题标题】:PHP Sort string value range array in numeric OrderPHP按数字顺序对字符串值范围数组进行排序
【发布时间】:2016-03-29 13:26:20
【问题描述】:
我有一个范围类型值 257-1024、1-256、1025-2056 的数组。所有这些值都是动态生成和随机定位的。在进行输出之前,我必须按数字 ASC 顺序对它们进行排序。使用 sort 或 natsort 函数将输出为 1-256,1025-2056, 257-1024,因为 php 将其识别为字符串。是否有内置函数可以按数字范围顺序进行排序/排列,即 1-256、257-1024、1025-2056
【问题讨论】:
标签:
php
arrays
string
sorting
numeric
【解决方案1】:
您可以在此处使用natsort() function 。
$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
)
希望这会有所帮助。
【解决方案2】:
您可以使用 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
)