【问题标题】:How is this PHP while loop code creating new table rows?这个 PHP while 循环代码如何创建新的表行?
【发布时间】:2013-07-12 16:50:13
【问题描述】:

您可以看到我有一个 3 元素数组。我正在使用一个while循环将所有3个值打印到一个表中,三个值中的每一个都有一行,但是当我只有一行使用html代码进行硬编码时,我不明白如何打印出三行。 PHP while 循环不会为每一行回显 tr 和 td 标记,因为这些行和详细信息标记在 PHP 代码之外。该代码有效——它为“mary”、“donna”、“shirley”的每个值打印出一个额外的新表行,但我不明白如何。如果 tr 和 td 标记是由 while 循环内的 PHP echo 语句输出的,我可以看到它工作,但这里不是这种情况。

<html>
<body>
<table cellspacing ="2" cellpadding ="2" align ="center" border="8">
<?php  
$ar1=["mary","donna","shirley"];
$len=count($ar1);
$ct=0;
?>
<?php while ( $ct<$len) { ?>
<tr>
<td> 
<?php echo $ar1[$ct]; 
$ct++;
?> 
</td>
</tr> 
<?php } //end while loop?> 
</table>
</body>
</html>  

【问题讨论】:

  • 请提供代码。
  • “php while 循环不回显 tr 和 td” - 呃 - 是的。
  • 显示回显重复的 tr 和 td 标签的 echo 语句

标签: php loops while-loop html-table


【解决方案1】:

我相信答案在于 HTML 是一种解释语言而不是编译语言。

因此,在这种情况下,您的 php while 循环将浏览器设置回您的第一个 tr 标签之前的位置,以便它通过并再次解释这些标签,并在执行此操作时将它们再次放入页面。像这样执行 while 循环本质上是一种廉价的回声方法。

无论如何,我都不是 PHP 大师,但根据我对 HTML 的读取方式和 PHP 工作原理的理解,这是我的答案。

【讨论】:

    【解决方案2】:

    您的&lt;tr&gt; 标签位于while 循环内。如果你只想要一行,试试这个-

    <html>
    <body>
    <table cellspacing ="2" cellpadding ="2" align ="center" border="8">
    <?php  
    $ar1=["mary","donna","shirley"];
    $len=count($ar1);
    $ct=0;
    ?>
    <tr>
    <?php while ( $ct<$len) { ?>
    <td> 
    <?php echo $ar1[$ct]; 
    $ct++;
    ?> 
    </td>
    <?php } //end while loop?> 
    </tr> 
    </table>
    </body>
    </html>  
    

    【讨论】:

      【解决方案3】:

      这段代码:

      <?php while ( $ct<$len) { ?>
      <tr>
      <td> 
      <?php echo $ar1[$ct]; 
      $ct++;
      ?> 
      </td>
      </tr> 
      <?php } //end while loop?> 
      

      相同
      <?php while ( $ct<$len) {
      echo "<tr>
      <td>";
      echo $ar1[$ct]; 
      $ct++;
      echo "</td>
      </tr>";
      } //end while loop?> 
      

      【讨论】:

      • 我同意这两个代码示例具有相同的效果。我只是不明白为什么....
      • 因为那是 php 解释器处理代码的方式?一切都是逐行解释的,所以普通的 html 只是被解释为输出
      • 这段代码也做了同样的事情,但是使用了一个 for 循环来处理 10 行。我还是不明白为什么....
      【解决方案4】:

      如果您更深入地分析代码..您自己会理解..您说“php while 循环不会回显每一行的 tr 和 td 标记,因为这些行和详细信息标记在 php 代码之外” 但它确实..html代码不是它在php范围之外编码的php代码的一部分......每当你的while循环再次执行它时,它会读取tr和tg标签并插入行,因此你会打印三行......

      【讨论】:

        【解决方案5】:

        这是 PHP 基本功能的一个简单案例。

        http://php.net/manual/en/language.basic-syntax.phpmode.php

        PHP 解析器会忽略一对开始和结束标记之外的所有内容,从而允许 PHP 文件具有混合内容。

        PHP 解析器,不需要知道 While 循环里面是什么,它只是重复输出。

        【讨论】:

          【解决方案6】:

          在一个 php 文件中,通过转义 php 代码(通过 ?> 你基本上对脚本说,现在出现了一些非 php 的东西,你提供了 Html 标签,然后浏览器将其解释为 html 代码。
          但是因为您仍处于循环中(您还没有通过添加结束标记来结束它},所以您重复退出代码,呈现 html,然后再次输入代码。

          一些编码人员更喜欢只退出 php 代码并在显示大量 html 时到处显示一些带有几个 php 标签的 html 代码。
          与连续使用 echo 语句相比,键入要少得多。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-02-18
            • 2019-10-13
            • 2017-08-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-07
            相关资源
            最近更新 更多