Мне нужно сгенерировать этот стол в PHP.
Итак, это моя попытка:
$days = 7;
$maxid = 7;
$startid = 1;
$html = "<table id='table1'>\n";
for ($i = 1;$i<=ceil($maxid/$days);$i++) {
$html .= "<tr>\n";
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";
Проблема в том, что я не знаю, как вставить MO TU WE TH FR SA SU
, а заголовок не повторяется каждые две строки.
Вы можете назначить 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";
Здравствуйте, спасибо за вашу помощь. Собственно код ничего не выводит.
@popol, код (как в вашем примере) назначает вывод переменной $html
. Если бы она не производила продукцию сейчас, она не производила бы ее раньше. Как вы выводите результат существующего кода?
Я знаю, что это, вероятно, школьный проект, но, черт возьми, это напоминает мне, почему библиотеки шаблонов важны. Если этого не сделать, лучше всего отладить код. Поскольку у вас есть представление о том, как вы хотите, чтобы эти циклы выполнялись, вам следует проверить свои утверждения об условиях входа и выхода.