在php中,显示序列的数组是否不重复,最后一个数组是否从第一个数组开始?

在php中,显示序列的数组是否不重复,最后一个数组是否从第一个数组开始?,php,arrays,Php,Arrays,我正在使用: $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,然后继续每次刷新这是否符合您的要求 <?php $input = ar

我正在使用:

$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,然后继续每次刷新

这是否符合您的要求

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

尝试实施此解决方案:

$size = count($input);
$input = array_merge($input,$input);
for($i=0;$i<$size;$i++){
    $output = array_slice($input,$i,$size-1);
    print_r($output);
}
$size=count($input);
$input=数组合并($input,$input);
对于($i=0;$i
如果您只想要一个不断旋转的阵列,它会永远循环,那么这一点很有效:

$array = range(1,5);

foreach($array as &$number) {
    echo $number . PHP_EOL;
    array_push($array, array_shift($array));
}
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']);
如果您希望它在每页加载时旋转,请将front number设置为一个变量,然后在专用数组中将其余变量设置为一行,这样做可以:

$array = range(1,5);

foreach($array as &$number) {
    echo $number . PHP_EOL;
    array_push($array, array_shift($array));
}
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']);
这也适用于以下阵列(或任何阵列):

你想要这个:

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


等等

不要用文字解释,而是显示您想要的输出。谢谢。或者用文字和所需的输出进行解释。这样我们可以收集尽可能最好的信息。第一次打印1,然后打印2,然后打印3,然后打印4,然后再打印1,然后继续“每次刷新”…那么这个数据也是存储在会话中还是什么?这个问题非常不清楚,演示得也不好。问题是什么…我有一个5值的数组,我想按递增顺序显示数组中的1值,在最后一个值循环开始后,从第一个开始…
致命错误:不支持的操作数类型st您的代码?array_slice期望第一个参数是array。您传入了array+1,这不起作用。修复了它。提供完整代码是一种实践吗?难道不知道$input变量是一个数组吗?1值仅在刷新后更改…第一次1,然后2,然后3,然后4,然后5,然后再次1,然后每次继续refresh@user1374160:使用session variablesf by refresh如果你是说每次循环重新开始,那么我的答案应该很贴切。如果你是说希望用户刷新页面并获得下一个(或开始)数字,这是一个不同的策略。如果你的意思是你想让它永远持续下去,然后在用户刷新页面时恢复它停止的位置,那么它将是两者的混合体。这基本上是倒数计时。OP显然在他的页面中再次使用“5”(尽管姿势不好)问题。这不是有问题吗?是的,我想要这个…谢谢Blake…你能告诉我一件事,没有会话,这是可能的还是不可能的…????如果你将它存储在数据库或平面文件中,但这似乎很傻。(我想你也不会想要cookies,因为你不想要会话)感谢您的支持,如果提供了答案,请将其标记为:)但为什么不使用数组我在数组中有值。。。选择1个和你的输出相同的值…不是为了表示憎恨,但我认为我的答案非常巧妙,因为它可以是任何数组。如果我知道这是每页的加载量,艾达·比查也会这么做。但要回答关于会话的问题,我完全同意布莱克的观点。您可以将值存储在任何位置,但会话是为此而设计的,不会增加额外的开销。另外,如果你在你自己的文件中这样做,你必须跟踪哪个用户在哪个数组值上,等等@user1374160-根据你最初的问题,浏览器将挂起,因为它只是永远在循环中输出数组。阅读每页加载的更新答案。
<?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 )