PHP:从1循环到5,从3开始
我想从1点循环到5点。如果使用for循环,这很容易: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, $
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++) { ...
^^^^^^^