PHP中的while循环中的偶数和奇数之间的交替

时间:2011-05-24 15:07:48

标签: php while-loop

嘿伙计们, 一直在处理几行代码,但我似乎无法让它工作。基本上我想通过while循环在偶数和奇数表样式之间交替。我究竟做错了什么? 好像它只是每次都循环遍历if()。

感谢名单!

<?php
    include 'connect.php';
    echo "<table id='hor-zebra'>";
    $i = 0;
    while($row = mysql_fetch_array($result))
    {
       if(i%2 == 0)
       {
          echo "<tr class='even'>";
          echo "<td>" . $row['departure'] ." ✈ ". $row['destination'] . "</td>";
          echo "</tr>";
       }

       else
       {
          echo "<tr>";
          echo "<td>" . $row['departure'] ." ✈ ". $row['destination'] . "</td>";
          echo "</tr>";
       }
       $i++;
    }
    echo "</table>";

    mysql_close($con);

  ?>

6 个答案:

答案 0 :(得分:17)

您的if条件中存在拼写错误。它应该是:

   if($i%2 == 0)

您还可以通过将类名分配给if和else块中的变量来保存一些击键:

   if($i%2 == 0)
   {
      $class = 'even';
   }
   else
   {
      $class = 'odd';
   }

   echo "<tr class='$class'>";
   echo "<td>" . $row['departure'] ." ✈ ". $row['destination'] . "</td>";
   echo "</tr>";

答案 1 :(得分:1)

您也可以使用css .nth-child属性

   tr:nth-child(even) {background: #CCC}
tr:nth-child(odd) {background: #FFF}

As per W3 example

答案 2 :(得分:0)

你忘记了'$'

 if(i%2 == 0)

应该是

 if(($i % 2) == 0)

答案 3 :(得分:0)

替换此行...

if(i%2 == 0)

......以下内容:

if($i % 2 == 0)

答案 4 :(得分:0)

这可以进一步改进。

foreach($post_array as $array => $row) {
    $class = ($array %2 == 0) ? 'even' : 'odd';
    echo '
    <tr class="'.$class.'">
        <td>' .$row['title']. '</td>
        <td>' .$row['content']. '</td>
        <td>' .$row['catid']. '</td>
        <td>' .$row['id']. '</td>
        <td>' . '<form action="edit.php?id='.$row['id'].'" method="post">
            <input type="hidden" name="id" id="id" value="'.$row['id'].'" />
            <input type="submit" name="edit" value="Edit" />
        </form>' . '</td>
        <td>' . '<form action="" method="post">
            <input type="hidden" name="id" id="id" value="'.$row['id'].'" />
            <input type="submit" name="delete" value="Delete" />
        </form>' . '</td>
    </tr>';
}

答案 5 :(得分:0)

CSS-Tricks发布了一个非常优雅的解决方案。 它看起来像超级还原C ++魔术。基本上他们这样做:

<div class="example-class<?php echo ($xyz++%2); ?>">

这适用于任何循环:for,foreach和while。 修改整数会为您提供更大的步长,即在3之后重置,在4之后重置等等。

CSS-Tricks final solution