繁体   English   中英

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

[英]PHP - Alternate row colours based on a 'grouping' value in an array

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

我有以下数组:

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)将再次具有灰色背景。

如果有人能指出我正确的方向,我将不胜感激。

提前致谢!

如果你需要任意风格的不同分组

将其输出到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.
}

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

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

然后当你迭代你的数组时,只需echo $colours[$meeting_grouping_var]; (其中$meeting_grouping_var是当前的meeting_grouping值)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM