Я хочу удалить или скрыть уже выбранное / существующее имя макета / идентификатор из выбора <option>
,
Если вариант макета:
Если вариант макета Home
уже выбран (скрыть / удалить home
):
<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>
Просто удалите / прокомментируйте код ниже:
<?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