PHP按数字顺序对字符串值范围数组进行排序


PHP Sort string value range array in numeric Order

我有一个范围类型值257-1024、1-2561025-256的数组。所有这些值都是动态生成和随机定位的。在输出之前,我必须按照ASC数字顺序对它们进行排序。使用sort或natsort函数给出的输出为1-2561025-2056257-1024,php将其识别为字符串。是否有一个内置函数可以按数字范围顺序进行排序/排列,即1-256257-10241025-256

您可以在这里使用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
)