循环中的php模数

时间:2011-11-15 11:10:31

标签: php modulus

我正在检查循环中的条目是否是第3次迭代,使用以下代码:

<?php for ($i = 0; $i < count($category_news); $i++) : ?>
        <div class="grid_8">
            <div class="candidate snippet <?php if ($i % 3 == 2) echo "end"; ?>">
                <div class="image shadow_50">
                    <img src="<?php echo base_url();?>media/uploads/news/<?php echo  $category_news[$i]['url']; ?>" alt="Image Preview" width="70px" height="70px"/>
                </div>
                <h5><?php echo $category_news[$i]['title']?></h5>
                <p><?php echo strip_tags(word_limiter($category_news[$i]['article'], 15)); ?></p>
                <?php echo anchor('/news/article/id/'.$category_news[$i]['news_id'], '&gt;&gt;', array('class' => 'forward')); ?>
            </div>
        </div>
    <?php if ($i % 3 == 2) : ?>
         </li><li class="row">   
    <?php endif; ?>
<?php endfor; ?>

如何检查循环是否在第2次而不是第3次迭代?

我试过$i % 2 == 1无济于事。

7 个答案:

答案 0 :(得分:16)

模数检查分裂的剩余部分。

如果$ i是10,10 / = 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!';

希望它可以理解。 晒。

答案 1 :(得分:8)

如有疑问,请写一个snippet of code

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 :  

答案 2 :(得分:7)

现在回答:

  

如何检查循环是否在第2次交互,而不是第3次我尝试过,

$i % 2 === 0

答案 3 :(得分:1)

您需要的每三次迭代

if ($i % 3 === 0) 

如果特定的第三次迭代则

if ($i === 3)   

答案 4 :(得分:0)

我认为应该是:

if ($i % 2 == 0) 

答案 5 :(得分:0)

试试这个,应该适用于每第3次迭代:

if ($i % 3 === 0) 

答案 6 :(得分:0)

要回答这个问题:

如何检查循环是否在其第二次 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的除法余数。

division parts named