这是如何PHP的同时循环代码创建新的表行


How is this PHP while loop code creating new table rows?

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

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

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

无论如何,我不是PHP大师,但从我对HTML的阅读方式和PHP的工作方式的理解来看,这就是我的答案。

您的<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>  

这段代码:

<?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?> 

如果您更深入地分析代码。。你自己会明白的。。您说"phpwhile循环不会为每一行回显tr和td标记,因为这些行和细节标记在php代码之外"但确实如此。。html代码不是php代码的一部分,它是在php范围之外编码的。。。每当while循环执行时,它都会再次读取tr和tg标记并插入行,从而打印出三行。。。

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

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

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

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

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

一些程序员更喜欢只退出php代码,并在显示大量html时,在此处和那里显示一些带有一些php标记的html代码
与持续使用echo语句相比,键入要少得多。