使用PHP重新选择多项选择列表的更好方法

使用PHP重新选择多项选择列表的更好方法,php,Php,我正在努力成为一名更好的PHP程序员。我发现的解决方案(见下文)是可行的,但看起来这并不是解决这个问题的最佳方法。有没有更好的开发人员能想出一种更好的方法,使用数据库中更通用的数组重新选择多选列表中的项?感谢您帮助我成为一名更好的开发人员 <?php $optFood = ''; $optMedication = ''; $optVaccinations = ''; $optMedicalServices = ''; $optVaccinations = ''; $optOutdoorHo

我正在努力成为一名更好的PHP程序员。我发现的解决方案(见下文)是可行的,但看起来这并不是解决这个问题的最佳方法。有没有更好的开发人员能想出一种更好的方法,使用数据库中更通用的数组重新选择多选列表中的项?感谢您帮助我成为一名更好的开发人员

<?php
$optFood = '';
$optMedication = '';
$optVaccinations = '';
$optMedicalServices = '';
$optVaccinations = '';
$optOutdoorHousing = '';
$optOther = '';

$options = explode(",", mysql_result($call, 0, 'assistNeeds'));
foreach($options as $val) {
${"opt".str_replace(' (See Notes)','',str_replace(' ','',$val))} = "selected=\"selected\"";
}
?>

<select name="assistNeeds[]" size="6" multiple class="span2" id="assistNeeds" tabindex="12" title="Select All">                                      
<option <?php echo $optFood ?> value="Food">Food</option>
<option <?php echo $optMedication ?> value="Medication">Medication</option>
<option <?php echo $optMedicalServices ?> value="Medical Services">Medical Services</option>
<option <?php echo $optVaccinations ?> value="Vaccinations">Vaccinations</option>
<option <?php echo $optOutdoorHousing ?> value="Outdoor Housing">Outdoor Housing</option>
<option <?php echo $optOther ?> value="Other (See Notes)">Other (See Notes)</option>
</select>

value=“药物”>药物治疗
value=“疫苗接种”>疫苗接种
value=“其他(见注释)”>其他(见注释)

您可以使用foreach循环简化它,从数组创建选项
$assistNeeds

<select name="assistNeeds[]" size="6" multiple="multiple" class="span2" id="assistNeeds" tabindex="12" title="Select All">
<?php
  $options = explode(",", mysql_result($call, 0, 'assistNeeds'));
  $assistNeeds = array("Food","Medication","Medical Services","Vaccinations","Outdoor Housing","Other (See Notes)");
  foreach($assistNeeds as $option) {
      $selected = (in_array($option, $options)) ? ' selected="selected"' : '';
      echo '<option'.$selected.' value="'.$option.'">'.$option.'</option>';
  }
?>
</select>


这个phpFIDLE——使用
$options=explode(“,”,“食品,疫苗”)
在示例中

看起来您有一些凌乱的数据,但除了必须执行的字符串清理之外,您的方法与其他方法一样好。。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。谢谢,我现在正在将大部分转换为PDO。