【问题标题】:Producing a colorful table from a CSV file with php使用 php 从 CSV 文件生成彩色表格
【发布时间】:2011-03-11 18:52:59
【问题描述】:

首先,我想说我刚刚开始使用 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>";

编辑:

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

【问题讨论】:

  • 你已经给你的颜色一些可读的名字,但你没有使用它们。您也可以使用 define('COLOR_GREEN', '#DDFFCC') 使它们更具可读性。
  • 技术上甚至不需要这样做——如果您使用 HTML 颜色名称而不是十六进制,代码仍然有效。 w3schools.com/html/html_colornames.asp

标签: php html-table import-from-csv


【解决方案1】:

要检查 $color 是否设置为“#EEEEEE”,您需要在 if statement 中使用双等号 (==),类似于 C/C++/C#。否则,您只是告诉 PHP 将 $color 设置为“#EEEEEE”。

if ($color == "#EEEEEE"){ 

【讨论】:

  • Arg.... 我不应该错过那个大声笑。我将颜色分配给灰色,这总是正确的,因此我总是变得粗体,背景为灰色:S
  • 如果你能告诉我如何定义你获得胜利的颜色。例如在 C 中我会做一些类似#define gray "#EEEEEE" 这样我的代码可以更具可读性跨度>
  • 我承认我自己是 PHP 新手。有一个格式为 define("gray","#EEEEEE") 的定义函数,但我不确定它是否会按照您想要的方式工作。如果没有,我会继续做你正在做的事情,只需将你的 if 语句更改为 ($color == gray) 并切换到 case $gray
【解决方案2】:

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>";

【讨论】:

    【解决方案3】:

    你需要关闭你的标签:

    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";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多