PHP - 基于数组中“分组”值的备用行颜色

时间:2013-04-25 12:57:05

标签: php

这可能是一个简单的答案,但我一直无法理解它。

我有以下数组:

Array
(
    [0] => Array
        (
            [meeting_grouping] => 1
            [client_first_name] => Nikolay
        )

    [1] => Array
        (
            [meeting_grouping] => 1
            [client_first_name] => Konstantin
        )

    [2] => Array
        (
            [meeting_grouping] => 1
            [client_first_name] => Andrey
        )

    [3] => Array
        (
            [meeting_grouping] => 4
            [client_first_name] => Eddie
        )

    [4] => Array
        (
            [meeting_grouping] => 4
            [client_first_name] => Neil
        )

    [5] => Array
        (
            [meeting_grouping] => 6
            [client_first_name] => Ian
        )

    [6] => Array
        (
            [meeting_grouping] => 6
            [client_first_name] => Mark
        )
)

我想要做的是将这些数据输出到HTML表格并对行进行颜色编码。我知道如何交替行颜色,但在这种情况下,我需要根据'meeting_grouping'对其进行颜色编码。即Nikolay,Konstantin和Andrey(meeting_grouping = 1)将具有灰色背景,Eddie和Neil(meeting_grouping = 4)将具有白色背景,Ian和Mark(meeting_grouping = 6)将再次具有灰色背景。

如果有人能指出我正确的方向,那将非常感激。

提前致谢!

2 个答案:

答案 0 :(得分:2)

如果您需要针对不同分组的任意样式

将其输出到HTML表格时,请将具有分组编号的类名称分配给行。那么你应该只为CSS中的每个组定义样式,当然还有默认样式,以防出现一些新的分组。

例如,该表可能是:

<table>
    <tr class="meeting_grouping1">
        <td>Konstantin</td>
    </tr>
    <tr class="meeting_grouping1">
        <td>Andrey</td>
    </tr>
    <tr class="meeting_grouping4">
        <td>Eddie</td>
    </tr>
    <tr class="meeting_grouping4">
        <td>Neil</td>
    </tr>
    <tr class="meeting_grouping6">
        <td>Ivan</td>
    </tr>
    <tr class="meeting_grouping6">
        <td>Mark</td>
    </tr>
</table>

然后在CSS中定义你的风格:

tr td
{
    background-color: white;
}

tr.metting_grouping1 td
{
    background-color: grey;
}

tr.metting_grouping4 td
{
    background-color: white;
}

tr.metting_grouping1 td
{
    background-color: grey;
}

如果您只需要为不同分组交替使用颜色

当遍历数组以准备表时,检查前一行的meeting_grouping值以查看它是否相同。如果不相同,请将样式切换为交替样式。在PHP中,它可能如下所示:

$use_alternate_style = false;
$previous_grouping = false;

foreach ($meeting_groupings as $entry)
{
    if ($entry['meeting_grouping'] != $previous_grouping)
    {
        // Inverses the alternate style indicator
        $use_alternate_style = !$use_alternate_style;
    }

    // Stores the grouping number for the next cycle
    $previous_grouping = $entry['meeting_grouping'];

    // Depending on whether $use_alternate_style is true or not, you
    // add a class name to the table row and then assign background colors
    // similarly as in the above HTML/CSS example.
}

答案 1 :(得分:1)

您可以创建一个将meeting_grouping映射到相应颜色的数组,例如:

$colours = array(
  1 => 'grey',
  4 => 'white', 
  6 => 'grey'
);

然后当您遍历数组echo $colours[$meeting_grouping_var];时(其中$meeting_grouping_var是当前meeting_grouping值)。