1

你可以看到我有一个 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>  
4

6 回答 6

0

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

于 2013-07-14T21:20:55.957 回答
0

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

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

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

于 2013-07-14T21:19:52.323 回答
0

您的<tr>标签位于 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>  
于 2013-07-14T21:20:31.857 回答
0

这段代码:

<?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?> 
于 2013-07-14T21:20:42.613 回答
0

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

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

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

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

于 2016-05-10T02:28:58.930 回答
0

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

一些编码人员更喜欢只退出 php 代码并显示一些带有当显示大量 html 时,这里和那里的几个 php 标签。
这比连续使用 echo 语句要少得多。

于 2017-02-17T17:32:01.090 回答