【问题标题】:PHP While Loop - Writing to Variable Multiple Times With HeredocPHP While 循环 - 使用 Heredoc 多次写入变量
【发布时间】:2013-04-05 18:43:18
【问题描述】:

我正在编写一个脚本来从数据库中提取并动态创建一个项目表。每次我尝试增加变量时,我使用的循环都会中断。

下面是一个结果相同的例子:

这个循环可以很好地创建多个表。

<?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 循环中多次写入同一个变量?

【问题讨论】:

  • 你没有关闭最后一个HEREDOC
  • 谢谢,但代码仍然无法运行
  • 你也可以通过 foreach 循环来做到这一点
  • 您希望输出如何?请编辑问题并显示。

标签: php arrays while-loop increment heredoc


【解决方案1】:

您的数组元素用完了。您只有 7 个项目,但尝试回显 8 个元素。你应该做适当的边界检查,看看你在使用它们时是否有足够的元素。

首先,将 while 循环替换为:

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>

【讨论】:

  • 感谢您的帮助,我不一定需要三元运算符,但是将条件更改为
  • 实际上,您应该使用$i &lt; count($items),因为$i 用作数组的索引并且从零开始,但count($items) 代表实际数字。所以$i 应该始终低于count($items)。我不熟悉 HereDoc,但我添加了一个常规 PHP 示例。
猜你喜欢
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多