PHP-基于';分组';数组中的值

PHP-基于';分组';数组中的值,php,Php,这个问题可能有个简单的答案,但我就是没能想清楚 我有以下数组: Array ( [0] => Array ( [meeting_grouping] => 1 [client_first_name] => Nikolay ) [1] => Array ( [meeting_grouping] => 1 [cl

这个问题可能有个简单的答案,但我就是没能想清楚

我有以下数组:

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表中,并对行进行颜色编码。我知道如何交替行颜色,但在这种情况下,我需要根据“会议分组”对其进行颜色编码。例如,尼古拉、康斯坦丁和安德烈(会议分组=1)的背景为灰色,埃迪和尼尔(会议分组=4)的背景为白色,伊恩和马克(会议分组=6)的背景为灰色

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


提前谢谢

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

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

然后,当您迭代数组时,只需
echo$colors[$meeting\u grouping\u var]
(其中
$meeting\u grouping\u var
是当前的
meeting\u grouping
值)。

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

当您将其输出到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>
如果您只需要为不同的分组交替使用颜色

检查数组以准备表时,请对照前一行的meeting_分组值检查是否相同。如果不一样,则将样式切换为交替样式。在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_分组映射到相应的颜色。再次感谢!感谢您抽出时间回答我的问题。幸运的是,billyonecan的想法在我看到你的帖子之前给了我所需要的灵感。不过,我建议不要在代码中硬编码颜色名称,因为可维护性-样式应该与应用程序逻辑分离,并放在CSS中。
$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.
}