我有这个功能为两个背景行表:
function background() {
$bg = ''; // odd
$bg2 = 'F3F3F3'; // even
if ( $i%2 == 0 )
$bgs = "$bg";
else
$bgs = "$bg2";
}
PHP代码是:
echo "<TABLE>";
$i = 0;
while ($f = $db->fetcharray( $r )) // for fetch
{
background(); // function
echo "<tr>
<td bgcolor=\"{$bgs}\">1</td>
<td bgcolor=\"{$bgs}\">any name</td>
<td bgcolor=\"{$bgs}\">any date</td>
</tr> ";
$i++;
}
echo "</table>";
HTML OUTPUT IS:
<Table>
<TR>
<td bgcolor="">$id</td>
<td bgcolor="">$name</td>
<td bgcolor="">$date</td>
</TR>
</table>
但这不起作用。 (不显示背景颜色)有什么问题?
由于
答案 0 :(得分:2)
您在background
函数中定义局部范围变量,并且它们在其外部不可用。你也在内部使用来自外部范围的$i
变量。所以你应该让你的函数返回值:
function background($i) {
return $i % 2 == 0 ? '' : '#F3F3F3';
}
并使用它:
...
$bgs = background($i);
echo "<tr>
<td bgcolor=\"{$bgs}\">$id</td>
<td bgcolor=\"{$bgs}\">$name</td>
<td bgcolor=\"{$bgs}\">$date</td>
</tr> ";
...