Nur mal als Anregung, man muss nicht die Ausgabe komplett wiederholen, wenn sich nur ein einziger Parameter ändert.
Angenommen ich bereite meine Ausgabe in einer Variablen vor:
$sHtmlTableRow =<<<EOHTML
<tr>
<td><a class="#CSSCLASS#" href="objekt.php?objektId=#OBJID#">#OBJID#</a></td>
<td>#OBJNAME#</td>
<td>#OBJPROPS#</td>
</tr>
EOHTML;
Dann benötige ich lediglich eine ternäre Operation für die Entscheidung, ob die Zeile eingefärbt wird oder nicht:
if ( $result ) {
$aCssClasses = [ 'red', 'white', 'yellow' ];
$iCssClassId = -1;
$iLastId = 0;
while ( $row = $stmnt->fetch(PDO::FETCH_OBJ) ) {
$iCssClassId++;
if ( $iCssClassId == count($aCssClasses) )
$iCssClassId = 0;
echo strtr(
$sHtmlTableRow
, [
'#CSSCLASS#' => ( ($iLastId == $row->objektId) ? $aCssClasses[$iCssClassId] : '' ),
'#OBJID#' => $row->objektId,
'#OBJNAME#' => $row->objektname,
'#OBJPROPS#' => $row->eigenschaften
]
);
$iLastId = $row->objektId;
}
}
Alles anzeigen
ungetestet, aber sollte so in etwa hinhauen...