检查是否在PHP中设置了变量

时间:2016-04-06 20:57:22

标签: php

所以我试图查看用户是否输入了任何内容:

$test = $_GET["restaurantName"];

if(isset($test))
{
    echo "you inputed something";
    echo "$test";
}

if(!isset($test))
{
    echo "you did not input anything";
    echo "$test";
}

die("The End");

出于某种原因,即使我没有输入任何内容,它仍然会通过第一个if语句,并且即使我没有查看有关isset()和我很确定你应该如何使用它。

3 个答案:

答案 0 :(得分:2)

如果你想保持相同的布局风格,你应该这样做。

if(isSet($_GET["restaurantName"])) {
     $test = $_GET["restaurantName"];
}

if(isset($test))
    {
        echo "you inputed something";
        echo "$test";
    } else { //!isset($test)
        echo "you did not input anything";
        echo "$test";
    }

您的问题是您正在设置变量,即使GET不存在。

我将如何亲自完成,因为它使相同的输出使代码更短:

if(isSet($_GET["restaurantName"])) {
    $test = $_GET["restaurantName"];
    echo "Your input: ".$test;
} else {
    echo "No Input";
}

答案 1 :(得分:1)

您正在设置它:$test = $_GET["restaurantName"]; isset检查是否已设置变量,而不是包含的变量是null还是空,您可以使用!empty

您还可以检查isset($_GET["restaurantName"];),但要注意即使您的网址中的get变量为?restaurantName=而且仍然设置,它只是空的

最好的办法是检查它是否已设置而不是空字符串:

if(isset($_GET["restaurantName"]) && $_GET["restaurantName"] != "")
{
    echo "you inputed something";
    echo $_GET["restaurantName"];
} else {
    echo "you did not input anything";
}

die("The End");

我还删除了第二个if,因为你可以使用else子句而不是检查两次。

要阅读的一些链接: http://php.net/manual/en/function.isset.php http://php.net/manual/en/function.empty.php

答案 2 :(得分:0)

如果此$_GET['restaurantName']来自提交的(GET)表单输入而不是链接中的查询字符串(可能存在也可能不存在),则始终会设置它。如果用户没有输入任何内容,则将其设置为空字符串。您可以使用empty代替isset进行检查(empty包含对isset的检查。)

if (!empty($_GET['restaurantName'])) {
    echo "you input " . $_GET['restaurantName'];
} else {
    echo "you did not input anything";
}

最好还是检查修剪后的条目,以防它' ',你可以用

if (!empty($_GET['restaurantName']) && trim($_GET['restaurantName'])) { ...

但是,这开始进入形式验证,这本身就是另一个话题。