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.
}