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

ak8*_*k85 3 html php forms arrays 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; ?>">
Run Code Online (Sandbox Code Playgroud)

我也尝试过

        <?php
            $name = $_GET["name"] ?: 0;
        ?>
Run Code Online (Sandbox Code Playgroud)

这将 0 值放入我的表单中,但我收到错误通知:未定义索引:名称

MrC*_*ode 5

使用isset()三元操作:

$name = isset($_GET["name"]) ? $_GET["name"] : 0;
Run Code Online (Sandbox Code Playgroud)

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

您可能更喜欢使用 resuble 函数来简化您的代码:

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

$name = filterThing('name');
$type = filterThing('type');
$other = filterThing('other');
Run Code Online (Sandbox Code Playgroud)