Как удалить опции из выбора, если он уже существует или выбран?

Я хочу удалить или скрыть уже выбранное / существующее имя макета / идентификатор из выбора <option>,

Если вариант макета:

  • Главная
  • Страница 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>
    

    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 { ?>
    

    Вы уже проверяете текущую страницу в цикле.

    Нет необходимости в дополнительных усилиях, используйте эту логику только для того, чтобы скрыть это.

    2

    Другие решения

    Почему бы не использовать 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

    0

    По вопросам рекламы [email protected]