我在这里和谷歌搜索过,但我找不到可以整合的解决方案。
我有从MySQL数据库填充的数据行,我想要做的是在某个列更改时交替使用行颜色。例如:
Sponsor Name
John Terry
John Bob
John Paul
Grant Peter
Perry Toby
Perry Gerald
因此,John的所有行的背景颜色为row1,Grant row2,然后Perry将再次为row1。
我打算做一个简单的切换并以这种方式交替,但赞助商有20种(并且不断增长)不同的可能性,我想知道是否有更简单的方法。
有没有更简单的方法,或者通过switch语句来实现它?
干杯
答案 0 :(得分:0)
以下是实现此目的的一般方法。如果您了解这个概念,您应该能够根据您的特定需求进行调整。基本上,在迭代查询结果时跟踪上一个项目。如果当前项目不同,则更改颜色。
$sponsors = ['John', 'John', 'Grant', 'Perry', 'Perry'];
$color = null;
$previous_sponsor = null;
foreach ($sponsors as $sponsor) {
if ($sponsor != $previous_sponsor) {
$color = $color == 'red' ? 'green' : 'red';
$previous_sponsor = $sponsor;
}
echo "$sponsor $color<br>";
}
答案 1 :(得分:0)
以下是执行此类操作的一般方法:
$dataArray = array(
array('sponsor' => 'John', 'name' => 'Terry'),
array('sponsor' => 'John', 'name' => 'Bob'),
array('sponsor' => 'Grant', 'name' => 'Peter'),
array('sponsor' => 'Grant', 'name' => 'Peter'),
array('sponsor' => 'John', 'name' => 'Bob'),
array('sponsor' => 'John', 'name' => 'Bob'),
array('sponsor' => 'Grant', 'name' => 'Peter'),
array('sponsor' => 'Grant', 'name' => 'Peter'),
array('sponsor' => 'John', 'name' => 'Bob'),
);
$colors = array('red', 'green', 'blue');
$currentColorIndex = 0;
echo '<table>';
foreach ($dataArray as $key => $data) {
if ((key($dataArray) > 0) && ($data['sponsor'] !== $dataArray[key($dataArray) - 1]['sponsor'])) {
$currentColorIndex = ($currentColorIndex + 1) % count($colors);
}
echo '<tr style="background-color: ' . $colors[$currentColorIndex] . '">' .
'<td>' . $data['sponsor'] . '</td>' .
'<td>' . $data['name'] . '</td>' .
'</tr>';
}
echo '</table>';