2013-04-13 24 views
0

我正在編寫一個腳本來從數據庫中提取並動態創建一個項目表。我使用的循環每次嘗試增加變量時都會中斷。PHP While循環 - 使用Heredoc多次寫入變量

下面是同樣的結果的一個例子:

這個循環將正常工作創建多個表。

<?php 

$item=array("item1", "item2", "item3", "item4", "item5", "item6", "item7"); 
$i=0; 


while($i!=count($item)){ 
$galleryItem.=<<<HTML 
<table> 
<tr> 
<td>$item[$i]</td> 
</tr> 
</table> 
HTML; 
$i++; 
} 

echo $galleryItem; 
?> 

但是,此循環不起作用。我希望它可以在表中創建兩列,並在多行中輸出完整的數組。

<?php 

$item=array("item1", "item2", "item3", "item4", "item5", "item6", "item7"); 
$i=0; 

while($i!=count($item)){ 

$galleryItem.=<<<HTML 
<table> 
<tr> 
<td>$item[$i]</td> 


HTML; 

$i++; 

$galleryItem.=<<<HTML 


<td>$item[$i]</td> 
</tr> 
</table> 
$i++; 
} 

echo $galleryItem; 
?> 

我會做什麼錯? PHP不允許你在while循環中多次寫入同一個變量嗎?

+1

你不關閉最後HEREDOC – Jon

+0

謝謝,但代碼仍然不起作用 – user2276737

+0

也可以通過foreach循環執行此操作 –

回答

0

您正在用盡數組元素。您只有7個項目,但嘗試回顯8個元素。您應該進行適當的邊界檢查,以確定在使用它們時是否有足夠的元素。

要下手,代替你while循環使用:

while($i <= count($item)) { 
    ... 
} 

但你的問題實際上是通過增加計數器$i++並沒有檢查是否一個實際存在呼應另一個元素引起的。速戰速決:

<td><?php echo ($i <=count($item)) ? $item[$i] : ''; ?></td> 

更新:我添加的你如何能做到這一點在常規PHP無定界符的例子:

<?php 

    $item = array("item1", "item2", "item3", "item4", "item5", "item6", "item7"); 
    $i=0; 

?><table> 
<?php while($i <= count($item)): ?> 
    <?php if (($i % 2) == 0): ?><tr><?php endif ?> 
     <td><?php echo ($i < count($item)) ? $item[$i] : ''; ?></td> 
    <?php if (($i % 2) == 1): ?></tr><?php endif ?> 
<?php $i++; endwhile; ?> 
</table> 
+0

感謝您的幫助,我並不一定需要三元運算符,但將條件更改爲<=而不是!=做了訣竅。任何洞察力爲什麼? – user2276737

+0

實際上,你應該使用'$ i