通过PHP GET传递布尔值

时间:2014-06-05 14:58:49

标签: php get boolean

这里很简单的问题,但不确定答案。我可以通过get传递一个布尔变量吗?例如:

http://example.com/foo.php?myVar=true

然后我

$hopefullyBool = $_GET['myVar'];

$hopefullyBool是布尔值还是字符串?我的假设是,它是一个字符串,但有人可以告诉我吗?感谢

5 个答案:

答案 0 :(得分:16)

所有GET参数都是PHP中的字符串。要获取布尔类型,请将评估为truefalse的内容传递为01,然后使用:

$hopefullyBool = (bool)$_GET['myVar'];

如果您想传递字符串truefalse,请:

$hopefullyBool = $_GET['myVar'] == 'true' ? true : false;

甚至更好:

  

" 1"," true"," on"和"是"。否则返回FALSE。

$hopefullyBool = filter_var($_GET['myVar'], FILTER_VALIDATE_BOOLEAN);

答案 1 :(得分:3)

如果你想避免使用if语句:

filter_var('true', FILTER_VALIDATE_BOOLEAN);  
//bool(true)

filter_var('false', FILTER_VALIDATE_BOOLEAN); 
//bool(false)

答案 2 :(得分:2)

它将作为字符串传递。虽然您可以使用bool强制转换它,但建议在某些情况下不要这样做。

如果myVar ==“True”

,你会更好

要小心:

>>> bool("foo")
True
>>> bool("")
False

空字符串计算结果为False,但其他所有内容的计算结果为True。所以这不应该用于任何解析目的。

答案 3 :(得分:0)

有几种方法可以做到。首先,我们可以使用PHP的内置(boolean)方法,该方法将字符串值转换为布尔值:

$hopefullyBool = (boolean)$_GET['myVar'];

这将导致truefalse的布尔值,具体取决于$_GET['myVar']中字符串的值。

从v5.2.1开始,我们还可以使用json_decode()确定布尔值:

$hopefullyBool = json_decode($_GET['myVar]);

json_decode()方法将JSON对象(它是一个字符串)解析为PHP变量,并考虑了类型转换。结果,URL参数中的字符串'true'将被强制转换为布尔值true

您可以同时使用上述两种方法:

$hopefullyBool = (boolean)json_decode($_GET['myVar]);

为避免在URL参数中传递大写字符(例如?myVar=True?myVar=FALSE),应使用strtolower()方法,该方法会将字符串转换为所有小写字母:

$hopefullyBool = (boolean)json_decode(strtolower($_GET['myVar]));

最后,如果URL的查询字符串中不存在参数,我们将回退到false,否则PHP将抛出未定义索引通知。为此,我们可以使用isset()方法:

$hopefullyBool = false;
if ( isset($_GET['myVar']) ) {
    $hopefullyBool = (boolean)json_decode(strtolower($_GET['myVar]));
}

为简化此操作,您可以使用如下条件语句来启动$hopefullyBool

$hopefullyBool = isset($_GET['myVar']) && (boolean)json_decode(strtolower($_GET['myVar']));

答案 4 :(得分:0)

如果我确定唯一传递的是一个布尔值, 我通常只检查它是否等于字符串“true” 如果是,则返回真,否则返回假

$is_true= $_GET['is_true'] == "true";