1

我有一个<select>字段,我想<option>根据 GET 值选择适当的字段所以我使用了三元语句来输出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>

这将返回相同的错误。

简洁地处理此错误并实现我所追求的最佳方法是什么?

4

3 回答 3

3

试试这个,

<option value="1" <?php echo isset($_GET['data']) ? ($_GET['data'] == '1' ? 'selected' : '') : ''; ?>>One</option>
于 2013-06-24T09:39:10.157 回答
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包。

于 2013-06-24T09:56:34.277 回答
0

试试喜欢

<option value="1" <?php echo ( isset($_GET['data']) && $_GET['data'] == '1') ? 'selected' : '' ;?> >One</option>
于 2013-06-24T09:53:32.277 回答