68

所以,我有一些看起来有点像这样的 PHP 代码:

<body>
    The ID is 

    <?php
    echo $_GET["id"] . "!";
    ?>

</body>

现在,当我传递一个像http://localhost/myphp.php?id=26它一样工作的 ID 时,但如果没有像它那样的 ID,http://localhost/myphp.php它会输出:

The ID is
Notice: Undefined index: id in C:\xampp\htdocs\myphp.php on line 9
!

我已经寻找解决此问题的方法,但找不到任何方法来检查 URL 变量是否存在。我知道一定有办法。

4

7 回答 7

152

您可以使用isset功能:

if(isset($_GET['id'])) {
    // id index exists
}

如果索引不存在,您可以创建一个方便的函数来返回默认值:

function Get($index, $defaultValue) {
    return isset($_GET[$index]) ? $_GET[$index] : $defaultValue;
}

// prints "invalid id" if $_GET['id'] is not set
echo Get('id', 'invalid id');

您也可以尝试同时验证它:

function GetInt($index, $defaultValue) {
    return isset($_GET[$index]) && ctype_digit($_GET[$index])
            ? (int)$_GET[$index] 
            : $defaultValue;
}

// prints 0 if $_GET['id'] is not set or is not numeric
echo GetInt('id', 0);
于 2012-08-18T15:15:11.800 回答
18
   if (isset($_GET["id"])){
        //do stuff
    }
于 2012-08-18T15:15:44.950 回答
9

通常这样做是很好的:

echo isset($_GET['id']) ? $_GET['id'] : 'wtf';

因此,在将 var 分配给其他变量时,您可以一口气执行所有默认值,而不是不断使用if语句来给它们一个默认值(如果它们未设置)。

于 2012-08-18T15:19:25.560 回答
7

您可以使用array_key_exists()内置函数:

if (array_key_exists('id', $_GET)) {
    echo $_GET['id'];
}

isset()内置函数:

if (isset($_GET['id'])) {
    echo $_GET['id'];
}
于 2012-08-18T15:17:58.813 回答
5

你正在使用 PHPisset

例子

if (isset($_GET["id"])) {
    echo $_GET["id"];
}
于 2012-08-18T15:16:25.647 回答
4

使用和empty()whit 否定(如果不为空则用于测试)

if(!empty($_GET['id'])) {
    // if get id is not empty
}
于 2012-08-18T15:16:16.087 回答
0

请试一试:

if(isset($_GET['id']) && !empty($_GET['id'])){
   echo $_GET["id"];
 }
于 2016-05-16T09:31:33.633 回答