Редактировать: удалил пример NOWDOC после прочтения связанного вопроса , объясняющего UseCase.
Вы можете легко решить вашу проблему следующим образом:
if(count($schedule) > 0) {
$rows = '<tr></th>'
. implode('</td><td>', $schedule)
. '</td></tr>';
}
Для заголовков таблиц вы можете использовать аналогичный подход:
if(count($schedule) > 0) {
$head = '<tr><th>'
. implode('</th><th>', array_keys($schedule))
. '</td></tr>';
}
Поскольку вы запрашиваете базу данных только для тех столбцов со значением и не хотите, чтобы отображались полные 24 часа, нет необходимости проверять, содержат ли строки db что-либо еще в PHP. Они делают. В противном случае они не были бы возвращены из запроса. А поскольку вам нужно только обернуть содержимое в ячейки и заголовки таблицы, все, что вам нужно сделать, это наложить на них разметку для этого.
В дополнение не добавляйте встроенные стили, так как они делают ваш код менее доступным. Некоторые пользователи переопределяют стили с помощью пользовательских таблиц стилей, и встроенные стили могут нарушить это. Просто добавьте таблицу стилей CSS или <style>
с помощью команды td { width:32px }
. Заставляет страницу весить меньше.