-1

如何删除do-while生成表中的最后一个元素?

在我的情况下,最后一个存储tr/td在哪里div.dividing_line

编码:

$ArrayLength = 6; 
$i = 1;
do {
    echo '
    <tr>
        <td valign="middle">Data_Position</td>
        <td valign="middle">Data_Item</td>
        <td valign="middle">Data_Pieces</td>
        <td valign="middle">Data_Price</td>
    </tr>
    <tr>
        <td colspan="4"><div class="dividing_line"></div></td>
    </tr>
    ';
    ++$i;
} while ($i < $ArrayLength+1);

例如:如果我有一个包含 6 个项目的数组,通常do-while会完成这项工作,所以最后会有 6 个tr数据和 6trdividing_line.

我需要的是 6tr的数据和 5trdividing_line. 那可能吗?

4

4 回答 4

1
$ArrayLength = 6; 
$i = 1;
do {
    echo '
    <tr>
        <td valign="middle">Data_Position</td>
        <td valign="middle">Data_Item</td>
        <td valign="middle">Data_Pieces</td>
        <td valign="middle">Data_Price</td>
    </tr>';

    if($i < $ArrayLength)
    {
        echo '
         <tr>
            <td colspan="4"><div class="dividing_line"></div></td>
        </tr>';
    }
    ++$i;
} while ($i < $ArrayLength+1);
于 2013-04-22T13:44:46.900 回答
1

Try this-

$ArrayLength = 6; 
$i = 1;
do {
    echo '
    <tr>
        <td valign="middle">Data_Position</td>
        <td valign="middle">Data_Item</td>
        <td valign="middle">Data_Pieces</td>
        <td valign="middle">Data_Price</td>
    </tr>';
   if($i != $ArrayLength) {
    echo '<tr>
        <td colspan="4"><div class="dividing_line"></div></td>
    </tr>
    ';
}
    ++$i;
} while ($i < $ArrayLength+1);
于 2013-04-22T13:45:07.853 回答
1

使用额外的 if 语句来检查您是否在最后一个元素:

if (%i < $ArrayLength) { echo '<tr>...dividing_line</tr>'; }
于 2013-04-22T13:45:42.653 回答
0

我认为你的方法只需要一个额外的步骤。

它可能是这样的:

$data = null;

foreach ($rows as $row) {
    $data[] = "<tr><td valign=\"middle\">Data_Position</td><td valign=\"middle\">Data_Item</td><td valign=\"middle\">Data_Pieces</td><td valign=\"middle\">Data_Price</td></tr>";
}

print implode("<tr><td colspan=\"4\"><div class=\"dividing_line\"></div></td></tr>", $data);

这样,您可以在没有更多逻辑的情况下完成您想要的。当然,它可以更改或重新设计,但我认为这种方式将为您提供一个简单而优雅的解决您的问题的方法。

希望它有所帮助:P

于 2013-04-22T13:53:52.320 回答