用年PHP来订购数组

时间:2019-06-11 08:05:30

标签: php

我有一个数组,其中:

$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功能在这种情况下不起作用。感谢您的帮助:)

4 个答案:

答案 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);

输出:-{https://3v4l.org/4TcBi

注意:-如果n/a不是第一个值,请执行以下操作:

https://3v4l.org/FbWvV