查询变量的测试是否存在并且ALSO设置为特定值?

Cam*_*ron 2 php

我想检查查询变量是否存在.然后我会基于该查询值做一些事情.如果它存在且是真的,那就做点什么吧.如果它不存在或为假,请执行其他操作,例如显示404页面.

例如,如果网址是 domain.com?konami=true

if (condition) {
    //something
} else {
    //show404
}
Run Code Online (Sandbox Code Playgroud)

Hal*_*yon 8

OPs的问题有点不清楚.如果您认为他想检查这konami是一个$_GET参数并且它的值是"true"do:

if (isset($_GET["konami"]) === true && $_GET["konami"] === "true") {
    // something
} else {
    // show 404
}
Run Code Online (Sandbox Code Playgroud)

当前接受的答案(卡梅伦)的问题在于它缺乏isset检查(这是不可原谅的,客观上是错误的).最高投票答案的问题(Jan Hancic)是缺乏=== "true"支票(这是有争议的,这取决于你如何解释问题).

请注意,这&&是一个懒惰的 - 意味着如果第一部分为假,则永远不会评估第二部分,这会阻止"Undefined index"警告.因此,陈述的顺序很重要.

还要注意的$a === true是不一样的$a === "true".第一个比较布尔值,第二个比较字符串.

如果您进行弱比较$a == true,则需要检查是否存在真相.

许多值都是真实的,比如字符串"true",数字1和字符串"foo".假值的示例是:空字符串"",数字0null.

"true" == true;   // true
"foo" == true;    // true
1 == true;        // true
"" == true;       // false
0 == true;        // false
null == true;     // false

"true" === true;  // false
"true" === false; // false
Run Code Online (Sandbox Code Playgroud)