我想检查查询变量是否存在。然后我会基于该查询值做一些事情。如果它存在且是真的,那就做点什么吧。如果它不存在或为假,请执行其他操作,例如显示404页面。
例如,如果网址为domain.com?konami=true
if (condition) {
//something
} else {
//show404
}
答案 0 :(得分:8)
konami
是否为$_GET
参数并且其值为"true"
,请执行以下操作:
if (isset($_GET["konami"]) === true && $_GET["konami"] === "true") {
// something
} else {
// show 404
}
当前接受的答案(Cameron)的问题在于它缺少isset
检查(这是不可原谅的,客观上是错误的)。最高投票答案的问题(Jan Hancic)是缺乏=== "true"
检查(这是有争议的,这取决于你如何解释问题)。
请注意&&
是一个懒惰的,这意味着如果第一部分为false,则永远不会评估第二部分,这会阻止"Undefined index"
警告。因此,陈述的顺序很重要。
另请注意,$a === true
与$a === "true"
不同。第一个比较一个布尔值,而第二个比较一个字符串。
如果您进行弱比较$a == true
,则表示您正在检查是否属于真相。
许多值都是真实的,例如字符串"true"
,数字1
和字符串"foo"
。
虚假值的示例包括:空字符串""
,数字0
和null
。
"true" == true; // true
"foo" == true; // true
1 == true; // true
"" == true; // false
0 == true; // false
null == true; // false
"true" === true; // false
"true" === false; // false
答案 1 :(得分:4)
对于应该测试什么值存在一些混淆。你想在布尔意义上测试konami
参数是否为true
,即你想测试konami
参数是否为 truthy ,还是你呢?想测试它的字符串值是否等于"true"
?或者,您是否希望一般为任何值测试konami
参数?
我想这里需要的是测试konami
给定的字符串值,在这种情况下为"true"
,并且同时进行设置。在这种情况下,这就足够了:
ini_set('error_reporting', E_ALL & ~E_NOTICE);
...
if ($_GET['konami'] == "true")
...
这就足够了,因为如果$_GET['konami']
未设置,则除了""
之外,它不能等于任何字符串值。由于您知道===
是字符串,因此不需要使用$_GET['konami']
。
请注意,我关闭了某人可能不喜欢的E_NOTICE
- 但这些类型的“通知”在许多编程语言中通常都很好,如果禁用它们,您将不会错过任何内容。如果你不这样做,你必须让代码变得如此复杂:
if (isset($_GET['konami']) && $_GET['konami'] == "true")
您是否真的希望将代码复杂化,或者更简单地忽略Undefinex index
之类的通知?这取决于你。
你提到的其他答案的问题:
true
,而不是"true"
。E_NOTICE
的必要性。=== true
进行了不必要的测试答案 2 :(得分:3)
嗯这个?
if (isset($_GET['konami']) === true) {
// something
} else {
//show 404
}
答案 3 :(得分:1)
易:
if(isset($_GET['konami']) && $_GET['konami'] != 'false') {
//something
} else {
// 404
}
答案 4 :(得分:1)
快速而简单。
$konami = filter_input(INPUT_GET, 'konami', FILTER_VALIDATE_BOOLEAN) or die();
参考:
答案 5 :(得分:1)
您可以尝试使用此代码。在此代码中,如果$ konami的条件包含值且$ konami包含'true',则检查两个条件为一。
$konami = $_GET['konami'];
if( ($konami) && ($konami == "true")){
/*enter you true statement code */
}else {
/* enter your false statement code */
}
答案 6 :(得分:0)
你可以这样做:
$konami = false;
if(isset($_GET['konami'])){
$konami = $_GET['konami'];
}
if($konami == "true"){
echo 'Hello World!';
}
else{
header('HTTP/1.0 404 Not Found');
}
在这种情况下,您将始终定义$konami
,如果设置,则填充GET参数的值。
答案 7 :(得分:0)
if(!$variable) {
//the variable is null
die("error, $variable is null");
}else{
//the variable is set, your code here.
$db->query("....");
}
答案 8 :(得分:-1)
这效果最好:
$konami = $_GET['konami'];
if($konami == "true")
{
echo 'Hello World!';
}
else
{
header('HTTP/1.0 404 Not Found');
}
答案 9 :(得分:-1)
最简单,最短的方式:
if($konami != null){ echo $konami; } else { header('HTTP/1.0 404 Not Found'); }