1

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

这是我希望该功能的外观:

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

因此,如果$count=7and you $selected_value=3,则该sort_integers()函数将返回:

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

如果$count=4and you $selected_value=2,那么sort_integers()函数将返回:

2, 3, 4, 1

我想我需要一个递增的第三个变量,以便我可以进行比较,但我的头开始受伤思考如何完成。想法?

4

3 回答 3

5

如果我说对了,我会这样做:

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));
}

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

于 2012-08-10T15:09:46.427 回答
2

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

$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);
}
于 2012-08-10T15:13:45.950 回答
1

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

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

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

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

于 2012-08-10T15:18:24.030 回答