Echo Dropdown 的选项名称而不是它的值

Echo Dropdown's Option Name Rather Than Its Value

我正在尝试 echo 所选下拉列表的名称而不是其值。我知道 echoing 下拉菜单的值可以通过实现以下内容来实现:

$variable = $_POST['vehicleStyle'];
echo $variable;

其中 vehicleStyle<select> 名称。

但是,我不在 value 我在选项名称之后。

这是我的PHP。我正在从 XML 文档中提取数据,其中 $k 等于选项名称,$v 等于其值。

<html>
 <body>

  <?php
    $xml = file_get_contents('note.xml');
    $dom = new DOMDocument();
    $dom->loadXML($xml);
   ?>

    <form action="additionalinfo.php" method=POST>

     <select name="vehicleStyle">
      <option selected="selected">Choose style</option>
      <?php
        foreach ( $dom->getElementsByTagName('style') as $styletwo )   {
          $styleid = $styletwo->getAttribute("name");
          $styleData [$styleid]= $styletwo->getAttribute("id");;
            }
        foreach ($styleData as $k=>$v){
      ?>
    <option value='<?php echo $v;?>'><?php echo $k;?> </option>
     <?php
      }
     ?>
   </select>

   <br>
   <button class="button">Submit</button>
 </form>


 </body>
</html>

这会输出一个包含两个值的下拉列表:“Audi=>292015”和 'BMW=>292016'。如果我添加

$variable = $_POST['vehicleStyle'];
echo $variable;

对于我的代码,我得到 292015292016(选择哪个)。如何回显下拉名称 AudiBMW

谢谢!

只需将选项的 value 更改为 $k,即

<option value='<?php echo $k;?>'><?php echo $k;?> </option>

如果您只需要文本而不需要数字,则不要将数字作为选项中的值。

<option><?php echo $k;?></option>

如果您需要同时获取文本和值,有各种关于如何实现的建议here

怎么样...

<option value='<?php echo $v . '|' . $k;?>'><?php echo $k;?> </option>

然后

$variable = $_POST['vehicleStyle'];
$variable = explode('|', $variable);

echo $variable[0];  //The "value"
echo $variable[1];  //The "text"

可能会使某些验证变得更加困难,但它应该能满足您的需求。