我正在编写一个脚本来从数据库中提取并动态创建一个项目表。每次我尝试增加变量时,我使用的循环都会中断。
以下是一个结果相同的例子:
此循环适用于创建多个表。
<?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循环中多次写入同一个变量吗?
答案 0 :(得分:0)
你的数组元素已经用完了。您只有7个项目,但尝试回显8个元素。您应该进行适当的边界检查,以确定在使用它们时是否有足够的元素。
首先,在循环时用:
替换你while( $i <= count($item) ) {
...
}
但是你的问题实际上是由于增加你的计数器$i++
并回显另一个元素而没有检查一个是否真的存在。快速修复:
<td><?php echo ($i <=count($item)) ? $item[$i] : ''; ?></td>
更新:我添加了一个示例,说明如何在没有HereDoc的常规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>