Passing a boolean through PHP GET
这里的问题很简单,虽然不确定答案。 我可以通过get传递布尔变量吗? 例如:
1 | http://example.com/foo.php?myVar=true |
那我有
1 | $hopefullyBool = $_GET['myVar']; |
所有GET参数在PHP中都是字符串。使用
Returns TRUE for"1","true","on" and"yes". Returns FALSE otherwise.
If FILTER_NULL_ON_FAILURE is set, FALSE is returned only for"0","false","off","no", and"", and NULL is returned for all non-boolean values.
1 |
获取布尔值类型的另一种方法是传递计算结果为
1 2 | http://example.com/foo.php?myVar=0 http://example.com/foo.php?myVar=1 |
然后转换为布尔值:
1 | $hopefullyBool = (bool)$_GET['myVar']; |
如果要传递字符串
1 | $hopefullyBool = $_GET['myVar'] == 'true' ? true : false; |
但是我想说
如果要避免使用if语句:
1 2 3 4 5 | filter_var('true', FILTER_VALIDATE_BOOLEAN); //bool(true) filter_var('false', FILTER_VALIDATE_BOOLEAN); //bool(false) |
它将作为字符串传递。虽然可以使用布尔型转换将其转换,但建议在某些情况下不要这样做。
如果myVar ==" True",您最好这样做
要小心:
1 2 3 4 | >>> bool("foo") True >>> bool("") False |
空字符串的评估结果为False,但其他所有评估结果为True。因此,不应将其用于任何类型的解析目的。
有几种方法可以做到。首先,我们可以使用PHP的内置
根据
从v5.2.1开始,我们还可以使用
您可以同时使用上述两种方法:
为了避免在URL参数中传递大写字符(例如
最后,如果URL的查询字符串中不存在该参数,我们将回退到
1 2 3 4 | $hopefullyBool = false; if ( isset($_GET['myVar']) ) { $hopefullyBool = (boolean)json_decode(strtolower($_GET['myVar])); } |
为了缩短此时间,您可以使用如下条件语句来启动