【问题标题】:Explode and foreach to create multi <td> tableexplode 和 foreach 创建多 <td> 表
【发布时间】:2013-02-08 01:02:28
【问题描述】:

我使用explode() 基本上将段落拆分为单个单词。效果很好。循环使用foreach()。也很好用。这里没有什么复杂的。

$title_pieces = explode(" ", $title_fixed);
foreach($title_pieces as $tpiece){
echo "<b>$tpiece<br>";
}

不幸的是,这只会返回一长串难看的单词。我想做但不知道如何把这一切放在一张漂亮的桌子上。创建表没问题,我想不通的部分是如何让它每行写多个$tpiece。我希望每行可能有 5 个&lt;td&gt;s。

如果我这样做:

foreach($title_pieces as $tpiece){
echo "<tr><td>$tpiece</td></tr>";
}

我还剩下一长串清单。有人可以在这里指出我正确的方向吗?

【问题讨论】:

  • 不要在每次迭代中放置一个关闭和打开 tr。

标签: php html loops foreach html-table


【解决方案1】:

只是一个示例代码。使用modulo-operator 解决。

<?php
$i = 1;
echo '<table><tr>';
foreach($title_pieces as $tpiece){
    if ($i % 10 == 0)
        echo "</tr><tr>";

    echo "<td>$tpiece</td>";

    $i++;
}

echo '</tr></table>';
?>

【讨论】:

  • 打败我。为你点赞,先生。编辑:那个奇怪的编辑是错误的。
  • 你有两次 tr 的回声。应该是桌子?
  • 条件后面的新行只会让新手开发者感到困惑
  • @jimjimmy1995:不。因为 1/10 不是 0,所以第一个 不会在第一个循环中回显。放置 而没有 是错误的。最后的 是如果最后一个元素没有关闭该行。
  • 我仍然喜欢这个答案,但最后一行的单元格数量可能不匹配。
【解决方案2】:

尝试类似:

$count = 1;
echo "<tr>";
foreach($title_pieces as $tpiece){
    if ($count % NUM_COLS == 0)
         echo "</tr><tr>";

    echo "<td>$tpiece</td>";
    $count++;
}
echo "</tr>";

其中可能有一个巧妙的优化。您正在做的是计算单元格的数量并在计数均匀地除以 NUM_COLS 时开始新行。重要的是计数从 1 开始,而不是 0,否则您将有一个空行。

【讨论】:

    猜你喜欢
    • 2015-12-08
    • 2021-12-20
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多