2013-07-14 45 views
0

你可以看到我有一個3元素的數組。我使用的是一個while循環,然後將所有3個值打印到一個表中,三個值中的每一個都打印一行,但我不明白如何將三行打印輸出,只有一行使用html代碼進行硬編碼。 PHP while循環不會爲每行回顯tr和td標籤,因爲這些行和詳細標籤在PHP代碼之外。代碼工作 - 它爲每個「mary」,「donna」,「shirley」值打印出一個額外的新表格行,但我不明白。如果tr和td標籤是在while循環中由PHP echo語句輸出的,我可以看到它工作,但這不是這種情況。這段PHP while while循環代碼如何創建新的表格行?

<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> 
+0

請提供代碼。 – user1759572

+1

「php while循環不回顯tr和td」 - 呃 - 是的。 – 2013-07-14 21:16:15

+0

讓我看到回聲重複tr和td標籤的echo聲明 – cryofan

回答

0

我相信答案在於,HTML是一種解釋型語言而不是編譯型語言。

因此,在這種情況下,您的php while循環會將瀏覽器設置回第一個tr標記之前的位置,以便再次解析這些標記,然後再將它們放到頁面中。像這樣做你的while循環是本質上做回聲的一種便宜的方法。

我不是任何PHP大師,但從我對HTML如何閱讀以及PHP如何工作的理解,這是我的答案。

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

我同意這兩個代碼示例會產生相同的效果。我只是不明白爲什麼.... – cryofan

+0

因爲這就是PHP解釋器handels代碼的方式?所有內容都是逐行解釋的,所以純html會被解釋爲輸出 – Philipp

+0

,這段代碼也會執行相同的操作,但對於使用for循環的10行也是如此。我還是不明白爲什麼.... <表CELLSPACING = 「2」 的cellpadding = 「2」 ALIGN = 「中心」 BORDER = 「8」> ​​ \t <?php echo「row!」; ?> \t <?PHP} //結束for循環?> – cryofan

0

,如果你分析的代碼更deeply..u會理解它你自己..你說:「PHP的while循環沒有回顯每行的tr和td標籤,因爲那些行和詳細標籤是在php代碼之外」 但它確實.. html代碼不是PHP的一部分代碼它編碼ou tside php作用域......並且每當你的while循環再次執行時,讀取tr和tg標籤並插入一行,因此你得到三行打印...

0

在一個php文件中,通過轉義php代碼(通過?>你基本上對腳本說,現在有非PHP的東西,你提供的HTML標籤,然後由瀏覽器解釋爲html代碼。
但是因爲你仍然在循環中(你還沒有通過添加結束標記來結束它),你重複退出代碼,呈現html,然後再次輸入代碼。

一些編碼人員更喜歡退出php代碼並且在顯示大量html的時候在這裏和那裏顯示一些帶有PHP標籤的html代碼
與連續使用echo語句相比,它的輸入要少很多