PHP:从1循环到5,从3开始

PHP:从1循环到5,从3开始,php,loops,random,for-loop,Php,Loops,Random,For Loop,我想从1点循环到5点。如果使用for循环,这很容易: for ($i=1; $i<=5; $i++) { // do something } 对于($i=1;$i您希望从某个随机点(偏移量)开始,然后循环5次: $offset = rand(1,5); for ($i=1; $i<=5; $i++) { echo (($i + $offset ) % 5) + 1; } $offset=rand(1,5); 对于($i=1;$i请尝试以下方法: for ($i = 0, $

我想从1点循环到5点。如果使用for循环,这很容易:

for ($i=1; $i<=5; $i++)
{
 // do something
}

对于($i=1;$i您希望从某个随机点(偏移量)开始,然后循环5次:

$offset = rand(1,5);
for ($i=1; $i<=5; $i++)
{
  echo (($i + $offset ) % 5) + 1;
}
$offset=rand(1,5);
对于($i=1;$i请尝试以下方法:

for ($i = 0, $j = 3; $i < 5; $i++)
{
   echo $j;
   $j %= 5;
   $j++;
}
for($i=0,$j=3;$i<5;$i++)
{
echo$j;
$j%=5;
$j++;
}
你需要两个变量来做你想做的事情。如果你设置J=3,它会做3-4-5-1-2


玩得开心。

好吧,
$i
将从
1
迭代到
5
,这意味着您可以创建另一个变量
$j
,该变量相当于
$i+2
,但它当然会导致计数:

3, 4, 5, 6, 7
这就是模运算符(
%
)的作用,模运算符在除以第二个数字后给出余数:

3 % 5 //3
7 % 5 //2
如果您从
1
迭代到
5
,然后添加2(
3-7
),并获取结果
mod(5)
,您将得到:

方程式:

$j = ($i + 2) % 5

3, 4, 0, 1, 2
这与您想要的很接近,但不完全相同。因此,不要先添加
2
,而是先添加
1
,然后再添加模数结果:

$j = $i;
$j += 1;
$j %= 5;
$j += 1;
//or in one line:
$j = (($i + 1) % 5) + 1;
这将为您提供一系列
3,4,5,1,2

要使用随机偏移,只需确保初始填充在一组5个连续的正整数中随机:

//this could be rand(0, 4) or rand(101, 105)
//it doesn't actually matter which range of 5 integers
//as the modulus operator will bound the results to the range of 0-4
$offset = rand(1, 5);
for ($i = 1; $i <= 5; $i++) {
    $j = (($i + $offset) % 5) + 1;
}
//这可能是兰特(0,4)或兰特(101105)
//实际上,5个整数的哪个范围并不重要
//因为模运算符将结果绑定到0-4的范围
$offset=兰特(1,5);
对于($i=1;$i一些(比我之前的更好)逐步示例:

首先,您希望有5个数字,这就是您执行循环的原因。这可以写为从0到4的计数器:

for ($i = 0; $i < 5; $i++) { ...
现在您已经有了创建值的
for
循环

在本例中,您可以用随机开始数替换
3
。注意它大于0且小于6,否则至少第一次迭代会给出错误的数字


你可以想象,有多种方法可以做到这一点,所以这只是一个例子。

这是硬编码的,我的意思是3是一个随机数,下一次加载它可能是4、2、1或5..3是一个随机数,下一次加载它可能是4、2或1或5你的系列将产生
3、4、0、1、2
。我已经有了随机数,假设它是3,这是n我需要3 4 5 1 2..如果是5,我需要5 1 2 3 4用随机数替换偏移量4 5 0 1 2如果$j=3,我需要它打印3 4 5 1 2为$j=3;它打印3 4 5 6 2,这很好,因为它从3开始,而不是1,它显示6
for ($i = 0; $i < 5; $i++) { ...
for ($i = 0, $j = 1; $i < 5; $i++, $j++) { ...
             ^^^^^^                ^^^^
for ($i = 0, $j = 3; $i < 5; $i++, $j %= 5, $j++) { ...
                                   ^^^^^^^