如何在循环中将两个相邻的列进行组合?

3

我正在尝试在 PHP 循环中,将两列包装在一个行 div 中。

我想出了以下测试代码,但无论我怎么做都会失败。这是我能想到的最接近解决方案,但我无法看出逻辑上的错误。

请看下面的代码:

<?php $i = 0; ?>
<?php while($i < 11) : ?>

  <?php if ($i % 2 === 0) : ?>

    <div class="row">row

  <?php endif; ?>

  <span><?php echo "[" . $i . "]"; ?></span>

  <?php if (!$i % 2 === 0) : ?>

     /row
    </div>

  <?php endif; ?>

  <?php $i++; ?>
<?php endwhile; ?>

生成的结果:
row [0] [1] /row
row [2] /row
[3] /row
row [4] /row
[5] /row
row [6] /row
[7] /row
row [8] /row
[9] /row
row [10] /row

在这里我们可以看到,第一行代码运行得非常好,但是后面在逻辑上存在某些缺陷,问题是出现在哪里呢?

4个回答

1
"对你的代码进行了一些小改动。"
  <?php $i = 0; 
       while($i <= 11) :  
       if($i%2==0){
        echo '<div class="row"> Row';
       } 
         echo "[" . $i . "]"; 

       if($i%2!=0){
        echo " row </div>";
       }
       $i++; 
     endwhile; ?>

它会输出


 Row[0][1] row
 Row[2][3] row
 Row[4][5] row
 Row[6][7] row
 Row[8][9] row
 Row[10][11] row

为什么 (!$i % 2 === 0) 和 ($i % 2 !== 0) 不一样呢?它们都返回 false,不是吗? - Chrillewoodz
两者是不同的东西,第一个会返回false,而第二个会返回true。试一下你就会发现了。 - Meenesh Jain
刚刚意识到。谢谢帮助 :) - Chrillewoodz
当$i为12或任何其他偶数时,这将无法工作。 - Eldarien
你需要保留所有奇数,因为你的计算需要两个和一个奇数。如果你对12或10进行计算,最后一行将无法关闭。做一件事情,将你的数字存储在变量中,如果它是偶数,则将i值与其最后一个值匹配,如果匹配则关闭该行。 - Meenesh Jain

0

这个不行。每行只有1列,第二列放在了行div的外面。而且你执行了两次$i++。 - Chrillewoodz
不好意思,我把 $i++ 给删掉了。虽然我还没有检查过,但我相信输出应该是每行2列(至少在删掉 $i++ 之后)。我会再次检查的。 - Ofir Baruch

0

类似这样:

<?php
  $count = 14;
  for($i = 0; $i <= $count; $i += 2) {
    if ($i % 2 == 0) {
       echo('row ');
    }

    echo('['.$i.']');
    if ($i < $count) {
      echo('['.($i+1).']');
    }

    if ($i % 2 == 0) {
       echo(' /row ');
    }
  }
?>

结果:

row [0][1] /row 
row [2][3] /row 
row [4][5] /row 
row [6][7] /row 
row [8][9] /row 
row [10][11] /row 
row [12][13] /row 
row [14] /row 

0

试试这个

<style>
div {
    border: 1px red solid;
    width: 100px;
    padding: 3px;
    margin: 3px;
    text-align: center;
}
</style>
<?php

$i = 0;
while ($i < 11) :
$row = $i % 2 === 0;
?>

    <?php if ($row): ?><div><?php endif;?>
    <span><?php echo '[' . $i . ']'; ?></span>
    <?php if (!$row): ?></div><?php endif;?>

<?php
    $i++;
endwhile; ?>

输出:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接