【问题标题】:How to remove options from select if already exist or selected?如果已存在或已选择,如何从选择中删除选项?
【发布时间】:2015-10-09 14:04:26
【问题描述】:

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

如果布局选项:

  • 首页
  • 第 1 页
  • 第 2 页
  • 第 3 页
  • 如果布局选项 Home 已经选择(隐藏/删除 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>
    

    【问题讨论】:

    • 没有必要用&lt;?php?&gt; 喷洒你的代码,这只会让它几乎不可读。如果你有 2 行连续的 PHP 代码,那么在开头的 &lt;?php 和结尾的 ?&gt; 就足够了

    标签: php select exists


    【解决方案1】:

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

    【讨论】:

    • 你能print_r($array)每个数组看看两个数组中存在什么值吗?
    【解决方案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 { ?> 
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 2013-02-15
      • 2013-07-13
      相关资源
      最近更新 更多