如果已经存在或 selected,如何从 select 中删除选项?

How to remove options from select if already exist or selected?

我想从 select <option> 中删除或隐藏 selected/exist 布局 name/id。

如果布局选项:

  • 首页
  • 第 1 页
  • 第 2 页
  • 第 3 页
  • 如果布局选项 Home 已经 selected ( hide/remove home ):

  • 第 1 页
  • 第 2 页
  • 第 3 页
  • <select name="layout"> <?php foreach ($layouts as $layout) { ?> 
    
       <?php if ($layout['layout_id'] == $my['layout_id']) { ?>
           <option value="<?php echo  $layout['layout_id'];  ?>" selected="selected">
                      <?php  echo $layout['name'];  ?>
                </option> 
    
           <?php } else { ?> 
    
               <option value="<?php echo $layout['layout_id']; ?>">
                   <?php echo $layout['name']; ?>
               </option>
           <?php } ?> 
    
      <?php } ?> 
    
    </select>
    

    只需remove/comment下面的代码:

    <?php if ($layout['layout_id'] == $my['layout_id']) { ?>
           <!-- <option value="<?php echo  $layout['layout_id'];  ?>" selected="selected">
                      <?php  echo $layout['name'];  ?>
                </option> -->
    
           <?php } else { ?> 
    

    您已经在循环检查当前页面。

    不需要额外的努力,只使用那个逻辑来隐藏它。

    为什么不用array_diff?创建两个数组 $layouts$existing,然后执行以下操作:

    <?php
    //Set $layouts and $existing to proper array values
    $results = array_diff($layouts, $existing); //Where the results will be Page 1, Page 2, Page 3 (not Home)
    
    //Do stuff here (i.e. foreach loop through $results array)
    ?>
    

    那么你就不必检查它是否已经存在,如果它已经存在,你也不必遍历每个项目。您可以遍历每个您知道不是重复的元素。有关 array_diff

    的更多信息,请参阅 this