php排序值范围

时间:2011-12-09 09:44:22

标签: php sorting usort

我有一个字符串数组:

0 - 5 50-100 10-50 150-250 100-150

现在我想自动将它们排序为:

0-5 10-50 50-100 100-150 150-250

我该怎么做?

2 个答案:

答案 0 :(得分:4)

http://www.php.net/manual/en/function.natsort.php 使用“自然顺序”算法对数组进行排序

$a = array("0-5", "50-100", "10-50", "150-250", "100-150");
natsort($a);
print_r($a);

结果:

Array
(
    [0] => 0-5
    [2] => 10-50
    [1] => 50-100
    [4] => 100-150
    [3] => 150-250
)

注意:密钥将保持不变并且不会重新编号。

如果这不是理想的结果,您可能需要在排序后自行重新编号:

foreach ($a as $v)
    $new_a[] = $v;
$a = $new_a;

或甚至更好:( thx @liquorvicar)

$a = array_values( $a );

答案 1 :(得分:2)

您需要使用 natsort() 功能。它将数值“排序为人”:)

$input = array('0-5', '50-100', '10-50', '150-250', '100-150');
natsort($input);
print_r($input);