PHP如果未定义,则在GET值上设置默认值

时间:2014-04-26 11:31:26

标签: php html arrays forms get

我有下面的表格,我在我的字段中输入一个值,这取决于是否有任何GET或不同。

我有什么工作,但我想知道是否有更有效的编码方式,因为我的真实形式将有大约10个输入字段,我不想每次添加时添加6行代码一个新的输入字段?

        <?php
        if (isset($_GET["name"])) {
            $name = $_GET["name"];
        }
        else {
            $name = 0;
        }

        if (isset($_GET["type"])) {
            $type = $_GET["type"];
        }
        else {
            $type = 0;
        }

        if (isset($_GET["other"])) {
            $other = $_GET["other"];
        }
        else {
            $other = 0;
        }
        ?>


        <input type="text"  name="name" value="<?php echo $name; ?>">
        <input type="text"  name="type"  value="<?php echo $type; ?>">
        <input type="text"  name="other" value="<?php echo $other; ?>">

我也尝试过

        <?php
            $name = $_GET["name"] ?: 0;
        ?>

这会在我的表单中输入值0,但是我收到错误注意:未定义的索引:名称

3 个答案:

答案 0 :(得分:3)

在三元运算符中使用isset()

$name = isset($_GET["name"]) ? $_GET["name"] : 0;

您收到通知是因为您直接评估$_GET['name'],而未使用isset()empty()包装。

您可能更愿意为简单的代码制作一个简化功能:

function filterThing($key){
    return isset($_GET[$key]) ? $_GET[$key] : 0;
}

$name = filterThing('name');
$type = filterThing('type');
$other = filterThing('other');

答案 1 :(得分:1)

试试这个:

$input_values = array('name','type','other');

foreach(input_values as $value){
   $$value = isset($_GET[$value]) ? $_GET[$value] : 0;
}

答案 2 :(得分:1)

如果有人有兴趣,使用这个小方法,如果找不到GET键或者它不是整数,你也可以定义默认值:

//?foo=ABC&x=40

function tryGetInt($key, $def = 0){
    return isset($_GET[$key]) && is_numeric($_GET[$key]) ? $_GET[$key] : $def;
}

$value1 = tryGetInt("foo"); //value1 = 0;
$value2 = tryGetInt("bar",20); //value2 = 20
$value3 = tryGetInt("x",20); //value3 = 40