在PHP中,如果URL中有“var = true”之类的内容,则URL中的“true”和“false”会转换为布尔变量,还是等于文本“true”还是'假'?例如,如果url中包含“var = false”:
if ($_GET['var'] == false) { ... }
工作?或者变量总是为真,因为它中有文本?
答案 0 :(得分:17)
不,$_GET
将始终只包含字符串。
但是,您可以filter获取布尔值。
FILTER_VALIDATE_BOOLEAN
:
返回TRUE
,"1"
,"true"
和"on"
的{{1}}。否则返回"yes"
。 如果设置了FALSE
,则仅FILTER_NULL_ON_FAILURE
,FALSE
,"0"
,"false"
和"off"
都会返回"no"
,所有非布尔值都会返回""
。
示例:
NULL
答案 1 :(得分:15)
它们是作为字符串传递的,所以除非它们是其中之一,否则它们总是很简单,而是评价为false:
''
'0'
为了让我的生活更轻松,我只需将布尔GET变量作为1
或0
传递,并将它们验证为其中一个值,或者适当地确定默认值:
// Default value of false
$var = false;
if (isset($_GET['var']))
{
if ($_GET['var'] === '1' || $_GET['var'] === '0')
{
$var = (bool) $_GET['var'];
}
}