Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP While循环-使用herdoc多次写入变量_Php_Arrays_While Loop_Increment_Heredoc - Fatal编程技术网

PHP While循环-使用herdoc多次写入变量

PHP While循环-使用herdoc多次写入变量,php,arrays,while-loop,increment,heredoc,Php,Arrays,While Loop,Increment,Heredoc,我正在编写一个脚本,从数据库中提取并动态创建一个项目表。每次我尝试增加变量时,我使用的循环都会中断 下面是一个具有相同结果的示例: 这个循环可以很好地用于创建多个表 <?php $item=array("item1", "item2", "item3", "item4", "item5", "item6", "item7"); $i=0; while($i!=count($item)){ $galleryItem.=<<<HTML <table> <

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

下面是一个具有相同结果的示例:

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

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

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

首先,将while loop替换为:

while( $i <= count($item) ) {
   ...
}
更新:我添加了一个示例,说明如何在常规PHP中不使用HereDoc进行更新:

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


您没有关闭最后一个HEREDOCThank,但代码仍然不起作用。因此,您可以通过foreach Loop来执行此操作。您希望输出是怎样的?请编辑问题并显示。感谢您的帮助,我不一定需要三元运算符,但将条件更改为“实际”,您应该使用
$I
,因为
$I
用作数组的索引,并且是基于零的,但
count($items)
表示实际数。因此,
$i
应始终保持低于
计数($items)
。我不熟悉herdoc,但我添加了一个常规的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>