我有一个<select>
字段,我希望根据GET值选择适当的<option>
所以我使用了一个三元语句输出selected
属性,如下所示:
<select name="data" id="data">
<option value="1" <?php echo $_GET['data'] == '1' ? 'selected' : '' ; ?>>One</option>
<option value="2" <?php echo $_GET['data'] == '2' ? 'selected' : '' ; ?>>Two</option>
<option value="3" <?php echo $_GET['data'] == '3' ? 'selected' : '' ; ?>>Three</option>
</select>
问题是,首次加载页面时没有$_GET
数组,所以我的选择框中出现了php错误:
注意:未定义的索引:...中的数据
所以我尝试使用isset
在检查值是否匹配之前首先检查数组是否已设置:
<option value="1" <?php echo isset($_GET) && $_GET['data'] == '1' ? 'selected' : '' ; ?>>One</option>
这会返回相同的错误。
简明扼要地处理这个错误并实现我所追求的目标的最佳方法是什么?
答案 0 :(得分:3)
试试这个,
<option value="1" <?php echo isset($_GET['data']) ? ($_GET['data'] == '1' ? 'selected' : '') : ''; ?>>One</option>
答案 1 :(得分:3)
您可以使用for
循环,只在您的要求为真时打印出$selected
变量。这将节省你重复自己。
<select name="data" id="data">
<?php for ($i = 1; $i <= 3; $i++) { ?>
<?php $selected = (isset($_GET['data']) && $_GET['data'] === $i) ? 'selected' : ''; ?>
<option value="<?=$i?>" <?=$selected?>><?=$i?></option>
<?php } ?>
</select>
注意:我使用的是PHP 5.4,因此可以合法地使用PHP短回声,在我看来,它在视图/模板中更好
如果您想显示数字的文字而不想手动使用数组,您可以查看Pear的Numbers_Words包。
答案 2 :(得分:0)
尝试
<option value="1" <?php echo ( isset($_GET['data']) && $_GET['data'] == '1') ? 'selected' : '' ;?> >One</option>