如何修复 PHP 数组分解结果仅显示形式 Select 中的最后一个值?

How To Fix PHP Array Explode Result Shows only Last Value in Form Select?

PHP 数组分解结果仅显示形式 select 中的最后一个值,而打印函数显示所有值。 HTML 部分应在下拉列表中显示所有值。目前,它只显示最后一个值。

MYSQL

Table Name: op_subject_combination
Id = 1 and its op_subject_combo_sub1 values are (chemistry, physics, mathematics)

PHP部分

<?php   

 $select_enquiry="SELECT * FROM op_subject_combination where id = '1' order by id desc limit 20";
 $sql=$dbconn->prepare($select_enquiry);
 $sql->execute();
 $wlvd=$sql->fetchAll(PDO::FETCH_OBJ);
 if($sql->rowCount() > 0){  
   foreach($wlvd as $rows){
      $str = $rows->op_subject_combo_sub1;
      $arr = explode( ",", $str ) ;
      foreach ($arr as $row1)
?>

HTML部分

<div class="form-group">
   <label for="exampleInputEmail1">Session Name</label>
   <select class="form-control" id="op_subject_combo_session" name="op_subject_combo_session" >
      <option selected><?php echo $rows4->st_center; ?></option>
      <option>--------</option>
      <option><?php  echo  $row1   ;?></option>
      <?php }} ?>
   </select>
</div>

你foreach,然后在循环完成后回显,因此只打印最后一个值。你想要的是:

<?php
foreach ($arr as $row1)
{
   echo "<option>" .$row1 . "</option>";
}
?>
</select>

FWIW,我猜这是因为您不了解在 foreach 声明后省略大括号时发生的情况。剧透警报:foreach 循环在 ?> 之前完成 这可能有助于使它更清楚:PHP - If/else, for, foreach, while - without curly braces?

你的嵌套是错误的。 foreach 应该只包含 <option> 如下所示。您还应该根据某些条件在单个选项上设置 selectedvalue="" 每个选项。 Kindof,拿纸和笔,用自然语言写下你想做什么,输出应该是什么。

<?php   
    $select_enquiry="SELECT * FROM op_subject_combination where id = '1' order by id desc limit 20";
    $sql=$dbconn->prepare($select_enquiry);
    $sql->execute();
    $wlvd=$sql->fetchAll(PDO::FETCH_OBJ);
    if($sql->rowCount() > 0){  
        foreach($wlvd as $rows){
?>
<div class="form-group">
   <label for="exampleInputEmail1">Session Name</label>
   <select class="form-control" id="op_subject_combo_session" name="op_subject_combo_session" >
<?php
            $str = $rows->op_subject_combo_sub1;
            $arr = explode( ",", $str ) ;
            foreach ($arr as $row1) {
?>
      <option <?=$row1==$rows4->st_center?' selected':''?>>
        <?php echo $row1; ?>
      </option>
<?php
            }
?>
      <option>--------</option>
   </select>
</div>
<?php 
        } 
    }
?>