PHP 循环中的模数

问题描述 投票:0回答:7
php modulus
7个回答
23
投票

模数检查除法的余数。

  • 如果 $i 是 10,则 10/2 = 5,没有剩余,所以 $i 模 2 将为 0。
  • 如果 $i 为 10,则 10/3 = 3,余数为 1,因此 $i 模 3 将为 1。

为了让您更轻松地跟踪项目数量,我将从 1 而不是 0 开始 $i。例如

for($i=1; $i <= $count; $i++)
    if($i % 2 == 0) echo 'This number is even as it is divisible by 2 with no leftovers! Horray!';

8
投票

如有疑问,请编写代码片段

for ($j = 1; $j < 4; $j++)
{
   for ($k = 0; $k < $j; $k++)
   {
      echo "\n\$i % $j == $k: \n";

      for ($i = 0; $i < 10; $i++)
      {
         echo "$i : ";
         if ($i % $j == $k)
         {
            echo "TRUE";
         }
         echo " \n";
      }
   }
}

这是输出。用它来弄清楚你需要使用什么:

$i % 1 == 0: 
0 : TRUE 
1 : TRUE 
2 : TRUE 
3 : TRUE 
4 : TRUE 
5 : TRUE 
6 : TRUE 
7 : TRUE 
8 : TRUE 
9 : TRUE 

$i % 2 == 0: 
0 : TRUE 
1 :  
2 : TRUE 
3 :  
4 : TRUE 
5 :  
6 : TRUE 
7 :  
8 : TRUE 
9 :  

$i % 2 == 1: 
0 :  
1 : TRUE 
2 :  
3 : TRUE 
4 :  
5 : TRUE 
6 :  
7 : TRUE 
8 :  
9 : TRUE 

$i % 3 == 0: 
0 : TRUE 
1 :  
2 :  
3 : TRUE 
4 :  
5 :  
6 : TRUE 
7 :  
8 :  
9 : TRUE 

$i % 3 == 1: 
0 :  
1 : TRUE 
2 :  
3 :  
4 : TRUE 
5 :  
6 :  
7 : TRUE 
8 :  
9 :  

$i % 3 == 2: 
0 :  
1 :  
2 : TRUE 
3 :  
4 :  
5 : TRUE 
6 :  
7 :  
8 : TRUE 
9 :  

7
投票

现在给出答案:

如何检查循环是否处于第二次而不是第三次迭代?

$i % 2 === 0

1
投票

对于每第三次迭代,您需要:

if ($i % 3 === 0)

如果是特定的第三次迭代,则:

if ($i === 3)

1
投票

回答问题:

如何检查循环是否处于第二次AND而不是第三次迭代?

当您想在条件中做两件事时,我们使用逻辑运算符

&&
。引用官方文档...

示例:

$a && $b

名称:

结果:

TRUE
如果
$a
$b
都是
TRUE

因此,对于代码,您需要...

if($i % 2 === 0 && $i % 3 !== 0) {
     // Loop is in its second and not its third iteration!
}

我们使用模数来解决这个问题,它返回除以 2 和 2 的余数。


0
投票

我想应该是:

if ($i % 2 == 0) 

0
投票

试试这个。它应该适用于每第三次迭代:

if ($i % 3 === 0) 
© www.soinside.com 2019 - 2024. All rights reserved.