-2

私は使っている:

$input = array("1", "2", "3", "4", "5");

ここで、配列の最初の値 (1) と残りの値 (2,3,4,5) の別の値を出力することから始めたいと思います。次に、印刷値は 2 とそれ以上の値 (3,4,5,1) になります。出力値が 5 になり、他の値が (1,2,3,4) になるまで、以下同様です。

for ループを使用していますが、値 5 の後、ループが壊れるはずです...

この場合どうすればいいでしょうか....

出力は次のようになります: 1 回目、2 回目、3 回目、4 回目、5 回目、1 回目以降は更新ごとに続行

4

5 に答える 5

2

これはあなたが探していることをしますか?

<?php

$input = array("1", "2", "3", "4", "5");
$arr = array();

foreach ($input as $item) {
    $i = array_shift($input);
    $arr[] = $input;
    $input[] = $i;
}

print_r($arr);

出力

Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 4
            [3] => 5
        )

    [1] => Array
        (
            [0] => 3
            [1] => 4
            [2] => 5
            [3] => 1
        )

    [2] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 1
            [3] => 2
        )

    [3] => Array
        (
            [0] => 5
            [1] => 1
            [2] => 2
            [3] => 3
        )

    [4] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )
)
于 2012-05-04T05:36:47.123 に答える
1

あなたはこれを求めている:

<?php 
session_start();

if(!isset($_SESSION['loop_num'])){
   $_SESSION['loop_num'] = 1;
}

$loop = true;

echo "Current: {$_SESSION['loop_num']} <br>";
$i = $_SESSION['loop_num'];

while($loop === true) {
    if($i >= 5){
        $i = 1;
    } else {
        $i++;
    }

    if($_SESSION['loop_num'] == $i){
        $loop = false;
        break;
    }
    $others[] = $i;

} 

if($_SESSION['loop_num'] >= 5){
        $_SESSION['loop_num'] = 1;
    } else {
        $_SESSION['loop_num']++;
    }
print_r($others);
?>

出力:

Current: 4 
Array ( [0] => 5 [1] => 1 [2] => 2 [3] => 3 )

Current: 5 
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )

等..

于 2012-05-04T06:09:20.443 に答える
0

このソリューションを実装してみてください:

$size = count($input);
$input = array_merge($input,$input);
for($i=0;$i<$size;$i++){
    $output = array_slice($input,$i,$size-1);
    print_r($output);
}
于 2012-05-04T05:41:13.363 に答える
0

永久にループする常に回転する配列が必要な場合は、次のように機能します。

$array = range(1,5);

foreach($array as &$number) {
    echo $number . PHP_EOL;
    array_push($array, array_shift($array));
}

ページの読み込みごとに回転させたい場合は、フロント番号を 1 つの変数に設定し、残りを専用配列に設定すると、次のように機能します。

session_start();

if(!$_SESSION['loop_array']) {
    $_SESSION['loop_array'] = range(1,5);
} 
    $current_value = array_shift($_SESSION['loop_array']);
    $others_values = $_SESSION['loop_array'];

    // Push current value to back of rotation, leaving next in line for
    // next page load.
    array_push($current_value, $_SESSION['loop_array']);

これは、次の配列 (または任意の配列) でも機能します。

$_SESSION['cute'] = array("dog", "cat", "pony", "bunny", "moose");

$_SESSION['ordinals'] = array("first", "second", "third", "fourth", "fifth");

$_SESSION['tick_tock_clock'] = array("I", "II", "III", "IV", "V", "VI", 
                                     "VII", "VIII", "IX", "X", "XI", "XII");

$_SESSION['randomness'] = array('butter', 'pillow', 'Alabama', 'bleeding gums');
于 2012-05-04T06:00:26.273 に答える
-2
<?php 

$input = array("1", "2", "3", "4", "5");

while(!empty($input)) {

    foreach($input as $i) {

        var_dump($i);

    }

    $input = array_splice($input, 0, count($input) - 1);

}

?>
于 2012-05-04T05:45:48.960 に答える