1

PHP で、1 からある値までの整数をソートする際に問題が発生しました。ソートは、値が 1 とある値の間の選択された整数に基づいています。

関数をどのように見せたいかは次のとおりです。

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

したがって、$count=7と you$selected_value=3の場合、sort_integers()関数は次を返します。

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

$count=4と youの場合$selected_value=2sort_integers()関数は次のように返します。

2, 3, 4, 1

比較できるようにインクリメントする 3 番目の変数が必要だと思いますが、それがどのように行われるかを考えると頭が痛くなり始めています。考え?

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 に答える