array_multisort似乎忽略了自然排序

时间:2015-03-16 10:13:45

标签: php sorting

我使用的是PHP 5.6.6,NATURAL_SORT中的array_multisort存在问题。

如果我这样做:

sort($var);

我说得对,#34;自然"输出如

p0_00001
p0_00002_
p0_00002_00011
p0_00002_00012
p0_00002_00013
p0_00002_00014
p0_00003_
p0_00003_00015
p0_00003_00016
p0_00003_00017
p0_00003_00018
p0_00003_00019
p0_00003_00020
p0_00003_00021
p0_00003_00022
p0_00003_00023
p0_00003_00024
p0_00004_
p0_00004_00025

使用array_multisort,我坚持这样:

array_multisort($var, $foo, $bar)

给了我:

p0_00001
p0_00002_
p0_00003_
p0_00004_
p0_00005_
p0_00006_
p0_00007_
p0_00008_
p0_00009_
p0_00010_
p0_00002_00011
p0_00002_00012
p0_00002_00013
p0_00002_00014
p0_00003_00015
p0_00003_00016
p0_00003_00017
p0_00003_00018
p0_00003_00019
p0_00003_00020
p0_00003_00021
p0_00003_00022
p0_00003_00023
p0_00003_00024

我试过

  array_multisort($var, SORT_NATURAL, $foo, $bar)

但输出保持不变。我不知道如何使用array_multisort来获得自然的"输出sort($var)

2 个答案:

答案 0 :(得分:1)

试试这个:

array_multisort ($var, SORT_ASC, SORT_REGULAR,
                 $var2, SORT_ASC, SORT_REGULAR,...);

$var, $var1, $var2 ...是要排序的数组
注意:这些数组通过引用传递

答案 1 :(得分:1)

试试这个

$dataPoints1 = array('p0_00201','p3_00002_','p2_00002_00011','p0_00022_00012','p0_00002_00013','p0_00002_00014','p0_00003_');
    echo "<pre>";
    print_r($dataPoints1);
    array_multisort($dataPoints1);
    echo "<pre>";
    print_r($dataPoints1);