【问题标题】:Dynamic table (colons depend on the content of the table)动态表(冒号取决于表的内容)
【发布时间】:2012-09-29 17:26:18
【问题描述】:

这个 php 代码显示了我网站上一个目录的内容:

<?php
 $dir = opendir(getcwd());
 ?>
<body>
<table>
    <tbody>
        <tr>
<?php
  while (($file = readdir($dir)) !== false) {
      {
            echo "<td>". $file ."</td>";
    }       
  }
  closedir($dir);
?>
        </tr>
    </tbody>
</table>
</body>

它将结果放在table 中。 问题是 PHP 代码生成了一个&lt;td&gt; 标记并将结果存储在其中。所以最终的table 有一个&lt;tr&gt; 和与结果一样多的&lt;td&gt; 标签。

我想要的是一个table,每行有 3 列(3 td)(tr 标签)。

有没有办法让表格动态化,每三个&lt;td&gt; 标签变成&lt;tr&gt; 标签 所以结果看起来像这样:(click here)

而不是看起来像这样:(click here)

【问题讨论】:

    标签: php html html-table dynamic-tables


    【解决方案1】:

    试试这个:

    <?php
     $dir = opendir(getcwd());
     ?>
    <body>
    <table>
        <tbody>
    
    <?php
      $n = 0;
      while (($file = readdir($dir)) !== false) {
          {
               if($n%3 == 0){echo "<tr>";}
               echo "<td>". $file ."</td>";
               $n++;
        }       
      }
      closedir($dir);
    ?>
    
    </tbody>
    

    【讨论】:

    • 这行不通。当第一个循环运行时,将写出带有文件名的 , 1 并且已经 1 关闭 。所以没有三列。
    • 酷!不过,我不确定这个新设置。 $n 将始终为 $n,并且由于您对写出开始 的检查与对写出结束 的检查不同,因此理论上有可能永远不会关闭表行。我总是使用我的答案中描述的设置,从来没有让我失望......
    • 非常感谢它与您给我的确切代码一样工作.. 我已经看到了结果的源代码并且没有像这样的结束标记 但是浏览器关闭了 自动..在html和所有其他打开的标签中..(我以前读过)谢谢你先生
    • 大多数浏览器都会很好地呈现表格,即使缺少结束 ,但它仍然不是有效的 XHTML。
    【解决方案2】:

    您可以使用modulus 来跟踪您在循环中的位置。 然后,当您乘以 3 时,重新启动表格行:

    <?php
       $dir = opendir(getcwd());
    ?>
    <body>
    
        <table>
            <tbody>
                <tr>
                <?php
                    $counter = 0;
                    while (($file = readdir($dir)) !== false) {
                        {
                            if($counter % 3 == 0 && $counter != 0) echo "</tr><tr>";
                            echo "<td>". $file ."</td>";
                            $counter++;
                        }       
                    }
                    closedir($dir);
                ?>
                </tr>
           </tbody>
        </table>
    
    </body>
    

    【讨论】:

    • 我认为您的代码与上一个答案几乎相同,您将另一个变量 $counter 置于 $n 的位置,但如果您希望它工作,您的代码需要两件事:首先是添加{} 像这样 if($counter % 3 == 0 && $counter != 0) {echo "";} 第二个就是加 $counter++;增加,但谢谢你先生的回答
    • 你对增量是正确的,我已经添加了它。对于像这样的单个 if 语句,您不需要那些花括号。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签