如果您尝试读取'get'变量的值,如果未在URL中设置所述变量会发生什么。示例:您请求页面test.php
,在该文件中,它尝试读取$_GET['message']
的值。在这种情况下会发生什么?剂量值刚刚返回为''
?
这是否意味着如果我总是期望输入一个值,并且我不愿意接受''我可以做类似
之类的值$foo = $_GET['bar'];
if($foo == ''){
// Handle my 'error'
}
else
{
// $foo should now have a value that I can work with
}
请记住,我知道我可以使用isset($_GET['bar'])
但我不只是想知道它是否已设定,我不在乎是否有,我只关心它是否有值不仅仅是一个空字符串。
答案 0 :(得分:7)
如果您不关心实际设置的值,可以使用:
if (empty($_GET['bar']))
// value is null, false, 0, '0' or an empty string (including whitespace).
答案 1 :(得分:6)
如果您尝试访问不存在的数组项,结果将为null
。
$foo = $_GET['bar']; //$foo is now null
值得注意的是,如果您使用的是弱comparison operator ==
而不是严格的比较===
,那么''
将被视为空。
上面代码的缺点是,当你使用一个不存在的索引访问数组时会产生一个通知,这有点乱。
因此,在将包含的值分配给变量之前,应检查是否设置了值。
if ( !isset($_GET['bar']) ){
//handle error or assign default value to $foo
}else{
$foo = $_GET['bar'];
}
如果您想拥有默认值,并且仅在$ _GET值存在时替换该默认值,则可以使用conditional operator(向下滚动到“三元运算符”)
$foo = isset($_GET['bar']) ? $_GET['bar'] : 'default value';
答案 2 :(得分:1)
我是这样做的。
$foo = ( isset( $_GET['bar'] ) ) ? $_GET['bar'] : false;
if(false === $foo){
die( 'no Foo for your Bar' );
}
作为一方,您可能永远不会从$ _GET
获得真正的布尔值答案 3 :(得分:0)
如果我理解正确的话:
$foo = $_GET['bar'];
if ((!isset($foo)) || $foo == '') {
//GET veriable not set, error
}
else {
// GET veriable set, code here.
}