我有一个数组,其中:
$strings = ['n/a', '2 years', '3 years', '4 years', '5 years', '1 year'];
如何订购年份?我需要得到结果:
$strings = ['n/a', '1 year', '2 years', '3 years', '4 years', '5 years'];
sort
功能在这种情况下不起作用。感谢您的帮助:)
答案 0 :(得分:1)
也许会为您提供帮助
sort($strings, SORT_NATURAL | SORT_FLAG_CASE);
答案 1 :(得分:1)
能为您提供帮助
$strings = ['n/a', '2 years', '3 years', '4 years', '5 years', '1 year'];
usort($strings, function($a, $b) {
if ($a == 'n/a') {
return 0;
}
return ($a < $b) ? -1 : 1;
});
答案 2 :(得分:0)
这应该有效:
$strings = ['n/a', '1 year', '2 years', '3 years', '4 years', '5 years'];
$numbers = array();
$albhabets = array();
foreach($strings as $v)
{
if(is_numeric($v[0]))
{
array_push($numbers,$v);
}else
{
array_push($albhabets,$v);
}
}
sort($numbers);
sort($albhabets);
print_r(array_merge($albhabets,$numbers));
答案 3 :(得分:-1)
<?php
$strings = ['n/a', '2 years', '3 years', '4 years', '5 years', '1 year'];
// remove first value from array and save it in a variable
$first_val = array_shift($strings);
//sort array based on string comparison
usort($strings, "strcmp");
//add removed value again at first position of the array
array_unshift($strings,$first_val);
//print array to see everything fine or not?
print_r($strings);
注意:-如果n/a
不是第一个值,请执行以下操作: