【问题标题】:Removing duplicated options from select box in PHP从 PHP 中的选择框中删除重复的选项
【发布时间】:2014-08-12 07:55:21
【问题描述】:

我想根据$chosen 数组中的元素数量生成选择框,每个选择框都有默认的选择选项。第一个是A,第二个是D。以下代码几乎可以,除了我想删除重复的选项。这是输出:

<select>
   <option>Select</option>
   <option value="A" selected="selected">A</option>
   <option value="A">A</option>
   <option value="B">B</option>
   <option value="C">C</option>
   <option value="D">D</option>
   <option value="E">E</option>
</select>

<select>
 <option>Select</option>
 <option value="D" selected="selected">D</option>
 <option value="A">A</option>
 <option value="B">B</option>
 <option value="C">C</option>
 <option value="D">D</option>
 <option value="E">E</option>
</select>

我尝试将array_mergearray_unique 合并$options$chosenforeach($options as $option) 之前,但它不起作用。任何人都可以提出解决方案吗?

<?php

$options = array("A","B","C","D","E");
$chosens = array("A","D");


foreach($chosens as $chosen)
{
  print "<select><option>Select</option>";

  if(in_array($chosen,$options))
  {
    print "<option value='".$chosen."' selected='selected'>$chosen</option>";
  }

 /* $options = array_unique(array_merge($chosen,$options)); */

    foreach($options as $option)
    {
      print "<option value='".$option."'>$option</option>";

    }

  print "</select>";
}

?>*

【问题讨论】:

  • 我认为您需要检查chosens 数组中的值是否已存在于options 数组中
  • 您希望选择 $chosen 数组中的值?
  • @TBI,是的,这就是我想要的。
  • 只要在第二个foreach循环中检查$option == $chosen,就可以去掉in_array()条件,here's an example
  • 是的,但是 $chosen 中有两个值...它会覆盖。

标签: php html arrays foreach


【解决方案1】:

其实,一个简单的 if 条件就足够了。像这样:

<?php

$options = array("A","B","C","D","E");
$chosens = array("A","D");

?>

<?php foreach($chosens as $chosen): ?>
    <select name="">
    <?php foreach($options as $option): ?>
        <option value="<?php echo $option; ?>" <?php echo ($option == $chosen) ? 'selected' : ''; ?>><?php echo $option; ?></option>
    <?php endforeach; ?>
    </select><br/>
<?php endforeach; ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多