Вы можете присвоить MO, TU и т. Д. Массиву и выполнить итерацию по нему, чтобы получить значения для повторяющегося заголовка. Оттуда вы можете использовать Оператор по модулю , чтобы определить, когда были выведены две строки, и повторить ваш заголовок:
$days = 7;
$maxid = 7;
$startid = 1;
$dayLabels = array('MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU');
$html = "<table id='table1'>\n";
for ($i = 1;$i<=ceil($maxid/$days);$i++) {
$html .= "<tr>\n";
if($i % 2 == 1) {
foreach($dayLabels as $label) {
$html .= " <th>$label</th>";
}
$html .= "</tr><tr>";
}
for ($j=1;$j<=$days;$j++)
if ($startid <= $maxid)
$html .= " <td class='mark'>DAY ".$startid++."</td>\n";
else
$html .= " <td> </td>\n";
$html .= "</tr>\n<tr>\n";
for ($j=1;$j<=$days;$j++)
$html .= "<td>Content</td>\n";
$html .= "</tr>\n";
}
$html .= "</table>\n";