Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP基于内容的可选行颜色_Php - Fatal编程技术网

PHP基于内容的可选行颜色

PHP基于内容的可选行颜色,php,Php,我在这里和谷歌上搜索过,但我一直无法找到一个可以集成的解决方案 我有从MySQL数据库填充的数据行,我想做的是在某个列更改时替换行颜色。例如: Sponsor Name John Terry John Bob John Paul Grant Peter Perry Toby Perry Gerald 所以,约翰的所有行都将有一个第1行的背景色,格兰特第2行,然后佩里将再次成为第1行 我打算做一个简单的转换,并以这种方式交替

我在这里和谷歌上搜索过,但我一直无法找到一个可以集成的解决方案

我有从MySQL数据库填充的数据行,我想做的是在某个列更改时替换行颜色。例如:

Sponsor    Name
John       Terry
John       Bob
John       Paul
Grant      Peter
Perry      Toby
Perry      Gerald
所以,约翰的所有行都将有一个第1行的背景色,格兰特第2行,然后佩里将再次成为第1行

我打算做一个简单的转换,并以这种方式交替进行,但由于赞助商有20种(而且越来越多)不同的可能性,我想知道是否有更简单的方法

有没有更简单的方法,或者通过switch语句来实现


干杯

这里有一个实现这一目标的一般方法。如果您理解这个概念,您应该能够调整它以满足您的特定需求。基本上,在迭代查询结果时跟踪上一项。如果当前项目不同,请更改颜色

$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>";
}
$赞助商=['John','John','Grant','Perry','Perry'];
$color=null;
$previous_赞助商=空;
foreach($赞助商作为$赞助商){
如果($赞助商!=$前赞助商){
$color=$color==‘红色’?‘绿色’:‘红色’;
$previous_赞助商=$赞助商;
}
回声“$赞助商$color
”; }
这里有一个做这类事情的一般方法:

$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>';
$dataArray=array(
数组(‘赞助商’=>‘John’、‘姓名’=>‘Terry’),
数组('shandor'=>'John','name'=>'Bob'),
数组('发起人'=>'授予','姓名'=>'彼得'),
数组('发起人'=>'授予','姓名'=>'彼得'),
数组('shandor'=>'John','name'=>'Bob'),
数组('shandor'=>'John','name'=>'Bob'),
数组('发起人'=>'授予','姓名'=>'彼得'),
数组('发起人'=>'授予','姓名'=>'彼得'),
数组('shandor'=>'John','name'=>'Bob'),
);
$colors=数组('red'、'green'、'blue');
$currentColorIndex=0;
回声';
foreach($dataArray作为$key=>$data){
如果((键($dataArray)>0)和($data['shandor']!==$dataArray[key($dataArray)-1]['shandor'])){
$currentColorIndex=($currentColorIndex+1)%count($colors);
}
回显“”。
“.$data[‘赞助商’]”。
'.$data['name'].''。
'';
}
回声';

如果您包含当前用于显示此数据的代码,则有人会更容易建议如何修改该代码以实现此目的。您的意思是要用两种颜色为表行着色吗?对于3个第一行颜色#1和第四行颜色#2,对于第五行和第六行颜色#1,再次对于下一行颜色#2,依此类推?你会根据什么改变颜色?你是根据赞助商名称更改颜色吗?@AliFarhoudi是的,所以颜色的更改基本上是根据赞助商名称进行的…@Don'tPanic-对不起,我现在不在我的电脑上,但这是一个显示数据的简单for循环。