将'false'的值传递给$ _GET参数。但是,PHP似乎无法将其识别为字符串,因为以下操作不起作用:
$SINGLE = $_GET['SINGLE'];
if ($SINGLE == 'false'){
echo 'HELLO';
}
我猜我必须进行一些转换或转换,但没有成功。
答案 0 :(得分:0)
第一个问题是,您将返回一个看起来像这样的未定义索引错误。
Notice: Undefined index: SINGLE in E:\XAMPP\htdocs\test\test.php on line 2
要解决此问题,您需要执行以下步骤:
if(isset($_GET['SINGLE'])) {
$SINGLE = $_GET['SINGLE'];
}
这样做的原因是PHP需要验证$_GET
本质上是否存在以及是否已设置...。如果没有校验码块,则每次将返回undefined
。
第二,正如评论中的人所述,您不会在引号false
/ true
中使用false
是BOOLEANS。当将它们用引号引起来时,它使它成为字符串。数字也是一样:
1
与'1'
不同。一旦将其用引号引起来,它就是一个字符串。因此,如果您的$_GET
值确实是BOOLEAN,则可以按以下方式进行检查:
if(isset($_GET['SINGLE']) && $_GET['SINGLE'] == false) {
$SINGLE = $_GET['SINGLE'];
} else {
// other code here to execute if needed
}
现在,如果$_GET
不是布尔值和字符串,则可以像上面一样检查它并添加一个额外的检查,例如:
if(isset($_GET['SINGLE']) && !empty($_GET['SINGLE'])) {
$SINGLE = $_GET['SINGLE'];
} else {
// other code here to execute if needed
}
希望这对您实现目标有帮助!
答案 1 :(得分:0)
最好先确定$ _GET ['SINGLE']是否存在:
if(isset($_GET['SINGLE'])) {
$SINGLE = $_GET['SINGLE'];
if ($SINGLE == 'false'){ // IF AS STRING
echo 'HELLO STRING';
}
if ($SINGLE == false){ // IF AS BOOLEAN
echo 'HELLO BOOLEAN';
}
} else {
// if not exist
}
答案 2 :(得分:0)
如果您的php文件仅包含问题中的代码示例,例如:
yourfile.php
<?php
$SINGLE = $_GET['SINGLE'];
if ($SINGLE == 'false'){
echo 'HELLO';
}
通过使用以下URL访问文件,可以使其回显HELLO:
http://yourhost/pathto/yourfile.php?SINGLE=false
请记住,这是区分大小写的。 url参数 的大小写必须与$_GET
中的键的大小写匹配。
您无需进行任何类型转换即可工作。
PHP通过解析HTTP请求的查询字符串来自动填充$_GET
超全局变量,并且$_GET
中的每个标量值都是一个字符串。它可能具有一些带有复杂查询字符串的数组结构,但是在数组内部,所有内容都是一个字符串。似乎有些混乱,因为您使用了字符串'false'
,但是除非您用$_GET
明确地将其放在PHP代码中,否则$_GET['SINGLE'] = false;
中就不会有布尔值。
如果字符串碰巧包含'true'
或'false'
,PHP不会将字符串自动转换为布尔值,并且如果您尝试显式转换它们,则它们都将取值为true
。
$example = (bool) 'false';
var_dump($example); // bool(true)