我正在尝试使用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 && $i % $divide != 0){
echo "<td width='40%'> </td>";
}
if($i % $divide == 0){
echo "</tr>";
}
}
您可以看到我的1-42座位号显示正确,但是我停留在最后一行。最后一行应该没有间隙。谁能帮我纠正我的逻辑吗?
答案 0 :(得分:1)
您可以通过两种方式实现这一目标:
方式1:
当我们位于索引= 42时,无法查看厅道
仅在以下情况下创建新行:
$i % $divide == 1 && $i != 45
是真的
如果$i % $divide == 0 && $i != 44
为真,则关闭
<?php
$divide = 4;
$inside = 2;
echo "<table border='1'>";
for($i = 1; $i <= 45; $i++){
if($i % $divide == 1 && $i != 45){
echo "<tr>";
}
echo "<td width='15%' align='center'>".$i."</td>";
if($i % $inside == 0 && $i % $divide != 0 && $i != 42){
echo "<td width='40%'> </td>";
}
if($i % $divide == 0 && $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 && $i % $divide != 0){
echo "<td width='40%'> </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 :(得分:0)
基于评论,我怀疑图片有问题,问题是如何在最后一行“显示”空座位(和过道)。
建议您添加另一个变量$maxseats = 45
;运行循环“偶数4”次(即从1到48),并且如果$i > $maxseats
打印(回显)占位符。