这个PHP循环代码如何创建新的表行?

时间:2013-07-14 21:11:03

标签: php loops while-loop html-table

你可以看到我有一个3元素数组。我使用while循环然后将所有3个值打印到一个表中,三个值中的每一个都有一行,但是当我只使用html代码硬编码一行时,我不明白如何打印三行。 PHP while循环不回显每行的tr和td标记,因为那些行和详细信息标记在PHP代码之外。该代码有效 - 它为" mary","唐娜",#34; 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>  

6 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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>  

答案 2 :(得分: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?> 

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

  

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

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

答案 5 :(得分:0)

在一个php文件中,通过转义php代码(通过?&gt;你基本上对脚本说,现在是非PHP的东西,你提供Html标签,然后由浏览器解释为HTML代码。
但是因为你还在循环中(你还没有通过添加结束标记来结束它),你重复退出代码,显示html,然后再次输入代码。

有些编码员喜欢退出php代码并在显示大量html时显示一些带有几个php标签的html代码。
与不断使用echo语句相比,输入的次数要少得多。