如何在循环内包装第二列和第二列?

时间:2015-06-18 11:57:45

标签: php loops

我正在尝试从php循环内部的一个div 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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用了另一个列的计数器。 经过测试并且似乎有效:http://sandbox.onlinephpfunctions.com/code/7374de00caef8a3f6b89a6196093326e8133c021

$col = 0;
for($i = 0; $i < 11; $i++){
  if($i % 2 == 0){
    echo '<div>';
  }

  echo "<span>[".$i."]</span>";
  $col++;

  if($col == 2){
    echo "</div>";
    $opened = false;
    $col = 0;
  }


}

答案 2 :(得分: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 

答案 3 :(得分: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