Php foreach在HTML中创建重复的表

Php foreach在HTML中创建重复的表,php,html,Php,Html,我有一个查询,它给出了这个数组 Array ( [0] => Array ( [id] => 1 [name] => name1 ) [1] => Array ( [id] => 2 [name] => name2 ) [2] => Array ( [id] => 3 [name] =>

我有一个查询,它给出了这个数组

Array ( 
    [0] => Array ( 
        [id] => 1 
        [name] => name1 
    )

    [1] => Array ( 
        [id] => 2 
        [name] => name2 
    ) 

    [2] => Array ( 
        [id] => 3 
        [name] => name3 
    )
 )
当它返回到HTML页面并成为foreach时,它会将表复制到3个表中

<?php foreach ($types AS $row_types) { ?>
<table class="table_style1">
    <tr>
        <th>Title</th>
        <th>Title2</th>
    </tr>
    <tr>
        <td><?php $row_types['name'][0]?></td>
        <td>data 1</td>
    </tr>
    <tr>
        <td><?php $row_types['name'][1]?></td>
        <td>data 2</td>
    </tr>
    <tr>
        <td><?php $row_types['name'][2]?></td>
        <td>data 3</td>
    </tr>
</table>
<?php } ?>

标题
标题2
数据1
数据2
数据3

请帮助我在此处仅显示一个表。

错误:您已使用该表在
forach()
循环中重复了,因此这是脚本中的错误

需要更正:
应该在循环
之外开始在循环
之外结束以避免您现在面临的重复
<代码>

因此,我将向您提供以下示例:

示例:

<table>
<?php
foreach()
{
}
?>
</table>
<table class="table_style1">
<tr>
  <th>ID</th>
  <th>NAME</th>
</tr>
<?php foreach ($types AS $row_types) { ?>        
    <tr>
        <td><?php echo $row_types['id']?></td>
        <td><?php echo $row_types['name']?></td>
    </tr>        
<?php } ?>
</table>

解决方案:foreach在HTML中创建重复的表 您的整个代码如下所示,正如我在上表中所述,tr将在foreach循环之前启动

代码:

<table>
<?php
foreach()
{
}
?>
</table>
<table class="table_style1">
<tr>
  <th>ID</th>
  <th>NAME</th>
</tr>
<?php foreach ($types AS $row_types) { ?>        
    <tr>
        <td><?php echo $row_types['id']?></td>
        <td><?php echo $row_types['name']?></td>
    </tr>        
<?php } ?>
</table>

身份证件
名称

标记和标题
trth
放在循环外部

$types = array ( 
            array ( 
                "id" => 1,
                "name" => "name1"
            ),
            array ( 
                "id" => 2,
                "name" => "name2"
            ),
            array ( 
                "id" => 3,
                "name" => "name3"
            )
        );
?>
<table class="table_style1">
    <tr>
        <th>Title</th>
        <th>Title2</th>
    </tr>
<?php 
foreach ($types AS $row_types) { ?>
    <tr>
        <td><?php echo$row_types['name'];?></td>
        <td>data <?php echo $row_types['id']?></td>
    </tr>
<?php }?>
</table>
$types=数组(
数组(
“id”=>1,
“名称”=>“名称1”
),
数组(
“id”=>2,
“名称”=>“名称2”
),
数组(
“id”=>3,
“名称”=>“名称3”
)
);
?>
标题
标题2
资料

问题在于您不了解
foreach
的工作原理。它获取您的数组,并对数组中的每个条目执行一次
foreach
中的代码

使用数组结构,
foreach
将逐个遍历数组的每个元素
$types
。由于
$types
中的元素本身是数组(即,您有一个多维数组)
$row\u types
将是一个包含键
id
name
的数组。因为我们只需要一个表,每个数组一行,所以我们需要在
foreach
循环之外启动表及其标题

<table class="table_style1">
    <tr>
        <th>Title</th>
        <th>Title2</th>
    </tr>
如果您注意到我正在使用


标记和标题
tr
放在循环外部。@S.I.然后放在表行中duplicate@FrayneKonok然后,表中的行不会手动列出所有行。这就是你的
foreach
应该做的。@tenten,好的,那么让我给你一个答案。你仍然在foreach里面留下了3行。OP想要一张有3行的桌子,而不是9行。请现在检查。是否正确。我希望这是正确的@Styphon@FrayneKonok非常感谢。
<table class="table_style1">
    <tr>
        <th>Title</th>
        <th>Title2</th>
    </tr>
    <?php foreach ( $types as $row_types ) { ?>
    <tr>
        <td><?= $row_types['id'] ?></td>
        <td><?= $row_types['name'] ?></td>
    </tr>
    <?php } ?>
</table>