PHP基于选定的整数排序整数

时间:2012-08-10 15:05:27

标签: php sorting

我在使用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 个答案:

答案 0 :(得分: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));
}

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

答案 1 :(得分: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);
}

答案 2 :(得分: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.",";
    }
}

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