我想检查GET变量是不是空的,我尝试了但是它们没有用。
所以我有这样的代码:
$u = isset($_GET["u"]);
$p = isset($_GET["p"]);
if ($u !== "" && $p !== "") {
//something
} else {
//do something
}
我通过发送create.php?u=&p=
来检查代码,但代码不起作用。它一直在运行//do something
部分。我试过了:
echo $u;
echo $p;
它返回1
和1
。然后我改为:
if ($u !== 1 && $p !== 1 && $u !== "" && $p !== "") {
//something
} else {
//do something
}
但它继续运行//do something
。
请帮忙。
答案 0 :(得分:6)
您可以使用empty这是一个PHP函数。它会自动检查它是否存在以及是否有任何数据:
if(empty($var))
{
// This variable is either not set or has nothing in it.
}
在您的情况下,由于您要检查它是否为空,您可以使用:
if (!empty($u) && !empty($p))
{
// You can continue...
}
修改:此外,comparison !==
将检查不等于相同类型的AND。虽然在这种情况下GET / POST数据是字符串,所以使用是正确的(与空字符串相比),使用时要小心。正常的PHP比较不等于!=
。
附加编辑:实际上,(有趣)它是。如果您使用!=
进行比较,那就可以了。当==
和!=
运算符执行松散比较时,false == ""
将返回true - 因此,($u != "" && $p != "")
的if语句代码将按预期方式运行。
<?php
$var1=false;
$var2="";
$var3=0;
echo ($var1!=$var2)? "Not Equal" : "Equal";
echo ($var1!==$var2)? "Not Equal" : "Equal";
echo ($var1!=$var3)? "Not Equal" : "Equal";
echo ($var1!==$var3)? "Not Equal" : "Equal";
print_r($var1);
print_r($var2);
?>
// Output: Equal
// Output: Not Equal
// Output: Equal
// Output: Not Equal
最终编辑:将if语句中的条件更改为:
if ($u != "" && $p != "")
它会像你期望的那样工作,它不会是最好的方式(也不是最短的),但它将以你想要的方式工作。
真的是最终编辑:
请考虑以下事项:
$u = isset($_GET["u"]); // Assuming GET is set, $u == TRUE
$p = isset($_GET["p"]); // Assuming GET is not set, $p == FALSE
严格比较:
if ($u !== "")
// (TRUE !== "" - is not met. Strict Comparison used - As expected)
if ($p !== "")
// (FALSE !== "" - is not met. Strict Comparison used - Not as expected)
松散比较:
if ($u != "")
// (TRUE != "" - is not met. Loose Comparison used - As expected)
if ($p != "")
// (FALSE != "" - is met. Loose Comparison used)
答案 1 :(得分:2)
您需要!empty()
if (!empty($_GET["p"]) && !empty($_GET["u"])) {
//something
} else {
//do something
}
答案 2 :(得分:1)
if ($u !== 1 && $p !== 1 && $u !== "" && $p !== "")
要检查$_GET
值是否为空,您可以使用2种方法。
由于$_GET
是一个数组,如果您只有u和p来检查或检查所有传入的$ _GET参数,则可以使用if(count($_GET))
。
空函数@Fluffeh提到。
if($_GET['u']!=""&&$_GET['p']!="")
希望它有助于thx
答案 3 :(得分:0)
在您的代码中,您应该正确检查变量是否存在,如
if ($u != NULL && $p != NULL && $u != 0 && $p != 0) {
//something
} else {
//do something
}
答案 4 :(得分:0)
哇!我太笨了...... isset
返回一个布尔值。我现在解决了我的问题。谢谢你回答:)
此修复:
$u = $_GET["u"];
$p = $_GET["p"];