Создать таблицу с повторяющейся строкой заголовка в PHP

Мне нужно сгенерировать этот стол в 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, а заголовок не повторяется каждые две строки.

Я знаю, что это, вероятно, школьный проект, но, черт возьми, это напоминает мне, почему библиотеки шаблонов важны. Если этого не сделать, лучше всего отладить код. Поскольку у вас есть представление о том, как вы хотите, чтобы эти циклы выполнялись, вам следует проверить свои утверждения об условиях входа и выхода.

user1531971 01.05.2018 19:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
129
1

Ответы 1

Вы можете назначить 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";

Здравствуйте, спасибо за вашу помощь. Собственно код ничего не выводит.

user9603639 01.05.2018 18:16

@popol, код (как в вашем примере) назначает вывод переменной $html. Если бы она не производила продукцию сейчас, она не производила бы ее раньше. Как вы выводите результат существующего кода?

mtr.web 01.05.2018 18:18

Другие вопросы по теме