【问题标题】: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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2018-04-21
      • 2015-03-16
      • 2021-12-19
      • 1970-01-01
      相关资源
      最近更新 更多