如何将值设置为 <select> 标记 [注意该值可能并不总是恒定的]

how to set value to <select> tag [NOTE that the value may not always constant]

我知道“selected”可以用来为标签设置一个值,但答案并不总是不变的。我希望该值与我在数据库中的数据具有相同的值。

<?php
    $answer = "C"; // get from database this is just example
    
    echo"
    <label for='answer'> Answer :</label>
    <select name='answer' id='answer' value ='$answer'>
        <option value='A'> A </option>
        <option value='B'> B </option>
        <option value='C'> C </option>
        <option value='D'> D </option>
    </select> 
    ";
 ?>

您需要使用数组构建您的选项。然后,当你循环选项时,你可以与答案进行比较,如果匹配,则设置'selected'。

<?php
    $answer = "C"; // get from database this is just example
    
    //need to build option in array, so that can make the comparison
    $options = [
        'A'=> 'A',
        'B'=> 'B',
        'C'=> 'C',
        'D'=> 'D'
    ];
    
    //build option html
    $html_options = '';
    foreach($options as $value => $label){
        $selected = ($value == $answer) ? 'selected' : '';
        $html_options .= "<option value='$value' $selected>$label</option>";
    }
    
    echo"
    <label for='answer'> Answer :</label>
    <select name='answer' id='answer'>$html_options</select> 
    ";
 ?>

如果不想用php设置值,也可以用javascript设置

<?php
    $answer = "C"; // get from database this is just example
    
    echo"
    <label for='answer'> Answer :</label>
    <select name='answer' id='answer' value ='$answer'>
        <option value='A'> A </option>
        <option value='B'> B </option>
        <option value='C'> C </option>
        <option value='D'> D </option>
    </select> 
    ";
 ?>



 <script
  src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
  integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs="
  crossorigin="anonymous"></script>

  <script>
    var ANSWER = '<?=$answer?>';
    $(function(){
      $('#answer').val(ANSWER)
    })
  </script>