我有一个选项下拉列表,如果值等于搜索变量,我需要在其中回显 selected
。
现在我正在使用 PHP if 语句来决定这一点,但我想通过使用一种不会在我的代码中占用太多行的方法来稍微清理一下。
这是我的 php if 语句的示例:
<option value="antiques" <?php if($_POST['category'] == 'antiques'){echo 'selected';}?>>Antiques</option>
虽然这行得通,但它只占用了我的代码相当多的空间,因为我有将近 100 个这样的选择选项。
有没有更好的方法来检查一个post变量是否等于这个选项的值然后回显selected
?
执行此操作的一种简单方法是使用 PHP 三元运算符(更多信息可在此处获得:http://php.net/manual/en/language.operators.comparison.php [向下滚动到关于 float 的大警告下方])
<option value="antiques"<?php echo ($_POST['category'] == 'antiques')?' selected':'';}?>>Antiques</option>
在这种情况下,它并没有节省多少空间,但在我看来,这是一种用 HTML 内联编写它的更简洁的方法。
使用来自@crazymoin 的代码进行编辑
将它移动到函数中的想法很棒,也让它变得简单。
我会像这样修改函数:
function abc($post,$value,$label){
echo '<option value="'.$value.'"'.($_POST[$post] == $value)?' selected':''.'>'.$label.'</option>';
}
然后你可以这样调用它:
<?php abc('category','antiques','Antiques'); ?>
请注意,如果由于某种原因 $_POST 数组中的指定索引不存在,PHP 将抛出一些关于未定义索引的警告。您可能还想扩展函数以使用 isset() 等进行一些检查。