PHP中的Foreach循环

PHP中的Foreach循环,php,Php,我正在创建一个团队分配表,允许我使用下拉列表将团队成员分配给团队。我有两张桌子: 成员-存储人员信息 map\u团队-这是团队信息 我正在为两个表准备一条语句以执行foreach: 成员语句变为$Team\u allocation\u行 map\u team语句变为$team\u List\u行 以下是我目前的代码: <tbody> <tr> <th scope="col">Name</th> <th

我正在创建一个团队分配表,允许我使用下拉列表将团队成员分配给团队。我有两张桌子:

  • 成员
    -存储人员信息
  • map\u团队
    -这是团队信息
我正在为两个表准备一条语句以执行foreach:

  • 成员
    语句变为
    $Team\u allocation\u行
  • map\u team
    语句变为
    $team\u List\u行
以下是我目前的代码:

<tbody>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Team</th>
    </tr>
    <?php $item_type=null; ?>
    <?php if($Team_allocation->rowCount() > 0) {
    foreach ($Team_allocation->fetchAll() as $Team_allocation_row) { ?>
    <tr>
      <td><?php echo ucwords($Team_allocation_row['firstname'])." ".ucwords($Team_allocation_row['surname']); ?></td>
      <td>
        <input type="hidden" name="id[]" value="<?php echo $Team_allocation_row['memberID']; ?>">
        <select name="outcome[]">
            <?php foreach ($Team_List->fetchAll() as $Team_List_Row) { ?>
            <option <?php if($Team_allocation_row['map_team'] == $Team_List_Row['id']) { echo "selected";} ?> value="0"><?php echo $Team_List_Row['name']; ?></option>
            <?php } ?>
        </select>
      </td>
    </tr>
    <?php } } else { ?>
    <tr>
        <td>No Users Found</td>
    </tr>
    <?php } ?>
</tbody>

名称
团队

您将在第一次使用外部foreach循环时使用
$Team_List
的所有结果集,因此在外部循环的第二次迭代时,
$Team_List
结果集将为空

因此,取而代之的是获取
$Team_列表
结果,并将它们放置在一个可以多次重用的数组中

<?php
    $teamlist = $Team_List->fetchAll();
?>
<tbody>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Team</th>
    </tr>
    <?php $item_type=null; ?>
    <?php if($Team_allocation->rowCount() > 0) {
    foreach ($Team_allocation->fetchAll() as $Team_allocation_row) { ?>
    <tr>
      <td><?php echo ucwords($Team_allocation_row['firstname'])." ".ucwords($Team_allocation_row['surname']); ?></td>
      <td>
        <input type="hidden" name="id[]" value="<?php echo $Team_allocation_row['memberID']; ?>">
        <select name="outcome[]">
            <?php foreach ($teamlist as $Team_List_Row) { ?>
    // ---changed here to  ^^^^^^^^^

            <option <?php if($Team_allocation_row['map_team'] == $Team_List_Row['id']) { echo "selected";} ?> value="0"><?php echo $Team_List_Row['name']; ?></option>
            <?php } ?>
        </select>
      </td>
    </tr>
    <?php } } else { ?>
    <tr>
        <td>No Users Found</td>
    </tr>
    <?php } ?>
</tbody>

名称
团队

您将在第一次使用外部foreach循环时使用
$Team_List
的所有结果集,因此在外部循环的第二次迭代时,
$Team_List
结果集将为空

因此,取而代之的是获取
$Team_列表
结果,并将它们放置在一个可以多次重用的数组中

<?php
    $teamlist = $Team_List->fetchAll();
?>
<tbody>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Team</th>
    </tr>
    <?php $item_type=null; ?>
    <?php if($Team_allocation->rowCount() > 0) {
    foreach ($Team_allocation->fetchAll() as $Team_allocation_row) { ?>
    <tr>
      <td><?php echo ucwords($Team_allocation_row['firstname'])." ".ucwords($Team_allocation_row['surname']); ?></td>
      <td>
        <input type="hidden" name="id[]" value="<?php echo $Team_allocation_row['memberID']; ?>">
        <select name="outcome[]">
            <?php foreach ($teamlist as $Team_List_Row) { ?>
    // ---changed here to  ^^^^^^^^^

            <option <?php if($Team_allocation_row['map_team'] == $Team_List_Row['id']) { echo "selected";} ?> value="0"><?php echo $Team_List_Row['name']; ?></option>
            <?php } ?>
        </select>
      </td>
    </tr>
    <?php } } else { ?>
    <tr>
        <td>No Users Found</td>
    </tr>
    <?php } ?>
</tbody>

名称
团队

首先获取然后foreach在循环中执行查询并不总是一个好主意,试着重新考虑这一点,也许使用“分组依据”查询会有所帮助?首先获取然后foreach在循环中执行查询并不总是一个好主意,试着重新考虑这一点,也许使用“分组依据”查询会有所帮助?那太好了,谢谢!如果没有选择任何选项,我只需添加一个额外的,以使其完美满足我的需要。太好了,谢谢!我只需要添加一个额外的,如果没有选择,使其完美地满足我的需要。