PHP 根据选定的整数对整数进行排序


PHP sort integers based on a selected integer

我在使用 PHP 对从 1 到某个值的整数进行排序时遇到了问题,其中排序基于值介于 1 和某个值之间的选定整数。

以下是我希望函数的外观:

function sort_integers($count, $selected_value){
     ....sort()...?
}

因此,如果$count=7和你$selected_value=3,那么sort_integers()函数将返回以下内容:

3,4,5,6,7,1,2

如果$count=4和你$selected_value=2,那么sort_integers()函数将返回以下内容:

2, 3, 4, 1

我想我需要一个递增的第 3 个变量,以便我可以进行比较,但我的头开始在思考如何做到这一点时感到疼痛。思潮?

如果我

做对了,我会这样做:

function sort_integers($count, $selected_value){
    $res = array();
    for($i = $selected_value; $i <= $count; ++$i)
      $res[] = $i;
    for($i = 1; $i < $selected_value; ++$i)
      $res[] = $i;
    return $res;
}

或使用内置函数:

function sort_integers($count, $selected_value){
    return array_merge(range($selected_value, $count), 
                       range(1, $selected_value - 1));
}

这假设您只想像示例中那样对齐值,并且没有要排序的给定数组(因为您没有传入一个数组,也没有提到一个数组)。

范围已经排序,您只需拆分它并反转部分:

$count = 7;
$selected = 3;
$range = range(1, $count);
if (--$selected)
{
    $sort = array_splice($range, 0, $selected);
    $sort = array_merge($range, $sort);
} else {
    $sort = $range;
}

或者更直接:

function sort_integers($count = 7, $selected = 3) {
    if (! $count = max(0, $count)) return array();
    if (--$selected && $selected < $count) {
        return array_merge(range($selected+1,$count), range(1, $selected));
    }
    return range(1, $count);
}

没有数组,这应该可以工作。

function sort_integers($count, $selected_value)
{
    for($x = $selected_value; $x<=$count;$x++)
    {
        echo $x.",";
    }
    for($x=1; $x < $selected_value;$x++)
    {
        echo $x.",";
    }
}

哦,最后可能会留下一个额外的逗号。