PHP Logic生成公交车座位安排

时间:2019-03-28 18:20:21

标签: php

我正在尝试使用PHP生成公交车座位安排。我要实现的目标如下图所示 enter image description here

我到目前为止所拥有的如下 enter image description here

我有以下脚本

$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%'>&nbsp;</td>";
    }
    if($i % $divide == 0){
        echo "</tr>";
    }
}

您可以看到我的1-42座位号显示正确,但是我停留在最后一行。最后一行应该没有间隙。谁能帮我纠正我的逻辑吗?

2 个答案:

答案 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%'>&nbsp;</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%'>&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 :(得分:0)

基于评论,我怀疑图片有问题,问题是如何在最后一行“显示”空座位(和过道)。

建议您添加另一个变量$maxseats = 45;运行循环“偶数4”次(即从1到48),并且如果$i > $maxseats打印(回显)占位符。