我知道php中有natsort()和natcasesort()函数可以按自然顺序排序数组元素。我正在尝试对以下项目进行排序。
array[0]= '10. xyz';
array[1]= '13. xyz';
array[2]= '2. xyz';
array[3]= '1a. xyz';
array[4]= '6. xyz';
array[5]= '1b. xyz';
array[6]= '4a. xyz';
array[7]= '4b. xyz';
现在,如果我应用natsort()函数,'10..'和'13..'会排在'1a..'的前面。那么如何让我的php代码认为'10..'比'1a...'更大,并且让'1a...'排在最前面呢?在我特定的情况下,正确的输出应该是:
'1a. xyz';
'1b. xyz';
'2. xyz';
'4a. xyz';
'4b. xyz';
'6. xyz';
'10. xyz';
'13. xyz';
我使用了自定义算法,但它的作用是相同的...它会在'1a...'之前放置'10..'。这是我的自定义函数:
function cmp($a, $b) {
$a_ex=explode(".",$a);
$b_ex=explode(".",$b);
if ($a_ex[0] == $b_ex[0] ) {
return 0;
}
return ($a_ex[0] < $b_ex[0]) ? -1 : 1;
}
natsort()
对我有效。您使用的是哪个版本的PHP? - Hammerite