PHP在三元运算符中为GET变量设置

时间:2013-06-24 09:33:52

标签: php html

我有一个<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>

这会返回相同的错误。

简明扼要地处理这个错误并实现我所追求的目标的最佳方法是什么?

3 个答案:

答案 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>