根据URL参数,为我的表单选择输出多个“selected”的最佳方法是什么?
在我的URL中我可能有这些参数&carBrand=1607191 | Acura&carBrand=1607185 |阿尔法罗密欧
但是,当我提交URL时,选择的唯一选项是第二个。对于这个表单,我需要通过url选择多个汽车选项。

    <?php $carBrand = !empty( $_GET['carBrand'] ) ? $_GET['carBrand'] : ''; ?>

    <select name="brands[]" id="selectBrands" class="form-control" multiple="multiple">
      <option value="1607191|Acura" <?php echo $carBrand == '1607191|Acura' ? 'selected' : ''; ?>>Acura</option>
      <option value="1607185|Alpha Romeo" <?php echo $carBrand == '1607185|Alpha Romeo' ? 'selected' : ''; ?>>Alpha Romeo</option>
      <option value="1607197|Aston Martin" <?php echo $carBrand == '1607197|Aston Martin' ? 'selected' : ''; ?>>Aston Martin</option>
      <option value="1607188|Audi" <?php echo $carBrand == '1607188|Audi' ? 'selected' : ''; ?>>Audi</option>
      <option value="1607200|BMW" <?php echo $carBrand == '1607200|BMW' ? 'selected' : ''; ?>>BMW</option>
      <option value="1607194|Bentley" <?php echo $carBrand == '1607194|Bentley' ? 'selected' : ''; ?>>Bentley</option>
      <option value="1607203|Bugatti" <?php echo $carBrand == '1607203|Bugatti' ? 'selected' : ''; ?>>Bugatti</option>
      <option value="1607206|Buick" <?php echo $carBrand == '1607206|Buick' ? 'selected' : ''; ?>>Buick</option>
    </select>

最佳答案

&carBrand=1607191|Acura&carBrand=1607185|Alpha这样的url按以下方式处理:carBrand=的每个后续值都将覆盖前一个值。要使用carBrand值数组,您需要在url中使用[]符号,即:

&carBrand[]=1607191|Acura&carBrand[]=1607185|Alpha

每次[]后,请参见carBrand?这就是你需要的。
之后,您的代码可以编写为:
<?php $carBrand = !empty( $_GET['carBrand'] ) ? $_GET['carBrand'] : array(); ?>

我使用array()作为默认值,这样以后in_array函数就不会抛出错误。
你的代码是:
<select name="brands[]" id="selectBrands" class="form-control" multiple="multiple">
  <option value="1607191|Acura" <?php echo in_array('1607191|Acura', $carBrand) ? 'selected' : ''; ?>>Acura</option>
  <option value="1607185|Alpha Romeo" <?php echo in_array('1607185|Alpha Romeo', $carBrand) ? 'selected' : ''; ?>>Alpha Romeo</option>
  <!-- More options here -->
</select>

10-06 15:06