在循环中的模式

时间:2009-10-25 07:58:48

标签: php

<table>
while ($row = mysql_fetch_assoc($result)) {
<tr>
<td>
echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>";
</td>
</tr>
}
</table>

如何制作背景色图案?例如,灰色,蓝色,灰色蓝色。

4 个答案:

答案 0 :(得分:2)

有多种方法可以做到这一点。这是一个。

<table>
<?php $i = 0; ?>
<?php while ($row = mysql_fetch_assoc($result)): ?>
<tr<?php echo (++$i & 1 == 1) ? ' class="odd"' : '' ?>>
<td>
<?php echo $row['test'] . " " . ' ($' . $row['test2'] . ") ?><br>
</td>
</tr>
<?php endwhile; ?>
</table>

我建议给每一个第二行而不是奇数和偶数的CSS类(我在这里称它为“奇数”)。然后你就做了:

tr td { background: grey; }
tr.odd td { background: blue; }
CSS中的

答案 1 :(得分:1)

如果是2色图案,请使用变量在蓝色和灰色之间切换。如果超过2种颜色,请使用旋转计数器

2种颜色

$blue = true;
<table>
while ($row = mysql_fetch_assoc($result)) {
<tr>
<td color="<?php echo $blue?'blue':'grey'; $blue ^= true; ?>">
echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>";
</td>
</tr>
}
</table>

超过2种颜色,一般解决方案:

$colourIndex = 0;
$colours = ('blue', 'red', 'green');

...
...

<td color="<?php echo $colours[$colourIndex]; $colourIndex = ($colourIndex+1)%length($colours); ?>">

答案 2 :(得分:1)

你需要像状态变量这样的东西,你存储的最后一行是蓝色或灰色。然后打印出另一种颜色并更新下一遍的状态变量。

这是一个例子:

<?php

echo '<table>';

$state = 1;
while ($row = mysql_fetch_assoc($result)) {
    echo '<tr>';
    if( $state%2 == 0 )
        echo '<td style="background-color:grey;">';
    else
        echo '<td style="background-color:blue;">';
    echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>";
    echo '</td></tr>';
    $state++;
}
echo '</table>';

?>

答案 3 :(得分:0)

您也可以使用InfiniteIterator一次又一次地重复序列。这与“旋转计数器”一样,适用于任意数量的元素。

$props = new InfiniteIterator(
  new ArrayIterator(array('a', 'b', 'c','d', 'e'))
); $props->rewind();

$l = rand(10, 20); // or whatever
for ($i=0; $i<$l; $i++) {
  $p = $props->current(); $props->next();
  echo 'class="', $p, '"... ';
}