我想从select <option>
中删除或隐藏已选择/存在的布局名称/ ID。
如果布局选项:
如果已选择布局选项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>
答案 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