0

首先,我想说我刚开始使用 PHP,所以请善待。我想要做的是从 csv 文件中打印一个表格。第一行我想用灰色背景颜色加粗。接下来的行应该与白色和绿色背景交替,文本不是粗体。下面是我的尝试,但它只生成一个带有灰色背景的所有粗体文本的表格

<?php
echo "<html><body><table>\n\n";
$f = fopen("acsv.csv", "r");

$green = "#DDFFCC";
$white = "#FFFFFF";
$grey = "#EEEEEE";
$color = "#EEEEEE";
echo "<table border=1 cellpadding=4 cellspacing=0>";
echo "<tr>";



while (($line = fgetcsv($f)) !== false) {


        foreach ($line as $cell) {
                if ($color = "#EEEEEE"){
                    echo "<td bgcolor= ".$color."><b>" . htmlspecialchars($cell) . "</b></td>";
                }
                else{
                    echo "<td bgcolor= ".$color.">" . htmlspecialchars($cell) . "</td>";
                }

        }
        echo "<tr>\n";

        switch($color){
            case "#EEEEEE":
                $color = "#FFFFFF";
                break;
            case "#FFFFFF":
                $color = "#DDFFCC";
                break;
            case "#DDFFCC":
                $color = "#FFFFFF";
                break;
        }
}
fclose($f);
echo "\n</table></body></html>";

编辑:

我还想知道如何用有意义的名称定义颜色,以使代码更具可读性

4

3 回答 3

3

To check whether $color is set to "#EEEEEE", you need to use a double equals (==) in your if statement, similar to C/C++/C#. Otherwise, you're just telling PHP to set $color to "#EEEEEE".

if ($color == "#EEEEEE"){ 
于 2011-03-11T18:59:27.150 回答
0

switch 语句需要在 foreach 中,否则颜色只会在循环完成迭代后改变。

<?php
echo "<html><body><table>\n\n";
$f = fopen("acsv.csv", "r");

$green = "#DDFFCC";
$white = "#FFFFFF";
$grey = "#EEEEEE";
$color = "#EEEEEE";
echo "<table border=1 cellpadding=4 cellspacing=0>";
echo "<tr>";



while (($line = fgetcsv($f)) !== false) {


        foreach ($line as $cell) {
        if ($color == "#EEEEEE"){
                echo "<td bgcolor= ".$color."><b>" . htmlspecialchars($cell) . "</b></td>";
            }
            else{
                echo "<td bgcolor= ".$color.">" . htmlspecialchars($cell) . "</td>";
            }
        switch($color){
            case "#EEEEEE":
                $color = "#FFFFFF";
                break;
            case "#FFFFFF":
                $color = "#DDFFCC";
                break;
            case "#DDFFCC":
                $color = "#FFFFFF";
                break;
        }



        }
        echo "</tr><tr>\n";

}
fclose($f);
echo "\n</table></body></html>";
于 2011-03-11T18:56:54.773 回答
0

您需要关闭标签:

foreach ($line as $cell) {
                if ($color = "#EEEEEE"){
                    echo "<td bgcolor= ".$color."><b>" . htmlspecialchars($cell) . "</b></td>";
                }
                else{
                    echo "<td bgcolor= ".$color.">" . htmlspecialchars($cell) . "</td>";
                }

        }
        echo "`</tr>`<tr>\n";
于 2011-03-11T18:57:54.840 回答