#php
#php
Вопрос:
Я пытаюсь сгенерировать расположение мест в автобусе, используя PHP. То, чего я хочу достичь, показано на изображении ниже
То, что у меня есть на данный момент, приведено ниже
У меня есть следующий скрипт
$divide = 4;
$inside = 2;
for($i = 1; $i <= 45; $i ){
if($i % $divide == 1){
echo "<tr>";
}
echo "<td width='15%' align='center'>".$i."</td>";
if($i % $inside == 0 amp;amp; $i % $divide != 0){
echo "<td width='40%'>amp;nbsp;</td>";
}
if($i % $divide == 0){
echo "</tr>";
}
}
Как вы можете видеть, у меня номер места из 1-42 отображается правильно, но я застрял в последнем ряду. В последней строке не должно быть пробелов. Кто-нибудь, пожалуйста, может помочь мне исправить мою логику?
Комментарии:
1. У вас места с 1 по 41 отображаются правильно. На вашей картинке нет 42. Это может быть подсказкой.
2. @DinoCoderSaurus виноват. Изображение обновлено.
3. Я переписал, и этот код работает. Может быть, кэширование? Может быть, какой-то недопустимый HTML в другом месте страницы?
4. @DinoCoderSaurus логика не будет работать для последней строки. Необходимо внести некоторые изменения.
5. правильно ли расположены схемы тегов вашей таблицы
<tr>
? (браузеры часто могут исправлять неправильные форматы схем таблиц)
Ответ №1:
Вы можете достичь этого двумя способами :
Способ 1:
Путь холла не просматривается, когда мы находимся на уровне index = 42
Новая строка создается только в том случае, если :
$i % $divide == 1 amp;amp; $i != 45
имеет значение true и закрывается, если $i % $divide == 0 amp;amp; $i != 44
имеет значение true
<?php
$divide = 4;
$inside = 2;
echo "<table border='1'>";
for($i = 1; $i <= 45; $i ){
if($i % $divide == 1 amp;amp; $i != 45){
echo "<tr>";
}
echo "<td width='15%' align='center'>".$i."</td>";
if($i % $inside == 0 amp;amp; $i % $divide != 0 amp;amp; $i != 42){
echo "<td width='40%'>amp;nbsp;</td>";
}
if($i % $divide == 0 amp;amp; $i != 44){
echo "</tr>";
}
}
echo "</table>";
Способ 2:
Этот способ более прост:
Строки с и пустой путь зала генерируются в первом цикле for, в то время как последняя строка генерируется в другом цикле, начиная с позиции 41
<?php
$divide = 4;
$inside = 2;
echo "<table border='1'>";
for($i = 1; $i <= 40; $i ){
if($i % $divide == 1){
echo "<tr>";
}
echo "<td width='15%' align='center'>".$i."</td>";
if($i % $inside == 0 amp;amp; $i % $divide != 0){
echo "<td width='40%'>amp;nbsp;</td>";
}
if($i % $divide == 0){
echo "</tr>";
}
}
echo "<tr>";
for ($i = 41; $i <= 45; $i ) {
echo "<td width='15%' align='center'>".$i."</td>";
}
echo "</tr>";
echo "</table>";
Комментарии:
1. Пожалуйста, добавьте некоторые пояснения относительно того, что вы на самом деле изменили и почему это сработало? ответы только в коде не очень полезны для кого-либо еще с подобными проблемами.
2. Я добавил некоторые пояснения по запросу
Ответ №2:
Основываясь на комментариях, я подозреваю, что изображение ошибочно, и вопрос в том, как «показать» пустые места (и проход) в последнем ряду.
Предлагаю вам добавить еще одну переменную $maxseats = 45
; запустите цикл «четные 4» раза (т.Е. от 1 до 48), и если $i > $maxseats
выведите (echo) заполнитель.