0

我为我的问题写了一个很长的描述,但我已经取得了进展并设法让它部分工作......我基本上希望表格中的每一行都是不同的颜色 - 并在它们遇到时突出显示某些行我设定的条件。

foreach ($data as $row) {
    $style = null;
        while (($values = fgetcsv($handle, 0, '|')) !== false) {
                $comment_lines = $values[6];
                $priority      = $values[7];
                $time_worked   = $values[11];
                $var_X  = strpos($priority, '1');
                $var_C1 = strpos($comment_lines, 'CCB');
                $var_C2 = strpos($comment_lines, 'CEB');
                $var_U  = empty($time_worked);
        }

        if (empty($values[0]) && count($values) === 1) {
                continue;
        }
    if (strlen($var_X)) {
        echo '<tr class="gradeX">';
        foreach ($values AS $index => $value) {
                echo '<td>' . $value . '</td>' ;
        }
    } else if ($var_C1 !== false) {
        echo '<tr class="gradeC">';
        foreach ($values AS $index => $value) {
                echo '<td>' . $value . '</td>' ;
        }
    } else if ($var_C2 !== false) {
        echo '<tr class="gradeC">';
        foreach ($values AS $index => $value) {
                echo '<td>' . $value . '</td>' ;
        }
    } else if ($var_U !== false) {
        echo '<tr class="gradeU">';
        foreach ($values AS $index => $value) {
                echo '<td>' . $value . '</td>' ;
        }
    } else if ($odd) {
        $odd = !$odd;
        echo '<tr class="even gradeA">';
        foreach ($values AS $index => $value) {
                echo '<td>' . $value . '</td>' ;
        }
    } else {
        $odd = !$odd;
        echo '<tr class="odd gradeA">';
        foreach ($values AS $index => $value) {
                echo '<td>' . $value . '</td>' ;
        }
    }
                echo '</tr>';
}

现在,只有“其他”在工作。我无法让 GradeX、GradeC 和 GradeU 显示任何内容...

编辑:

这是工作代码,干杯。

while (($values = fgetcsv($handle, 0, '|')) !== false) {
        $style = null;
        $comment_lines = $values[6];
        $priority      = $values[7];
        $time_worked   = $values[11];
        $var_X  = strpos($priority, '1');
        $var_C1 = strpos($comment_lines, 'CCB');
        $var_C2 = strpos($comment_lines, 'CEB');
        $var_U  = empty($time_worked);

        if (empty($values[0]) && count($values) === 1) {
                continue;
        }

        if ($var_X !==false) {
                echo '<tr class="gradeX">';
        } elseif ($var_C1 !== false) {
                echo '<tr class="gradeC">';
        } elseif ($var_C2 !== false) {
                echo '<tr class="gradeC">';
        } elseif ($var_U !== false) {
                echo '<tr class="gradeU">';
        } else {
                //nothing
        }

        foreach ($values as $index => $value) {
                echo '<td>' . $value . '</td>';
        }

        echo '</tr>';
}
4

2 回答 2

1

在您的循环中,您需要添加一个计数器来识别您当前是在“偶数”还是“奇数”迭代中,然后在输出时添加“奇数”或“偶数”类。

这里已经有一个相关的问题,涵盖了这里:php:如何在数组中添加奇数/偶数循环

通过使用 if 语句检查相关数据是否存在,其他部分应该相当容易。

例如,strlen将告诉您变量是否有长度(输出 'gradeX'),而strpos将允许您检查变量是否包含字符串(用于 'gradeC')。

于 2013-05-23T14:13:49.703 回答
0

如果您可以将 IE 定位为晚于 IE8 并忘记 IE8,则可以使用 CSS3:

 tr:nth-child(odd) {
     background-color: #EEEEEE;
 }

 tr:nth-child(even) {
     background-color: #FFFFFF;
 }
于 2013-05-23T14:30:20.010 回答