如果已存在或已选择,如何从选择中删除选项?

时间:2015-07-20 12:35:12

标签: php select exists

我想从select <option>中删除或隐藏已选择/存在的布局名称/ ID。

如果布局选项:

  • 主页
  • Page 1
  • Page 2
  • Page 3
  • 如果已选择布局选项Home(隐藏/删除home):

  • Page 1
  • Page 2
  • Page 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>
    

    2 个答案:

    答案 0 :(得分:2)

    只需删除/评论以下代码:

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

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

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

    答案 1 :(得分:0)

    为什么不使用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