通过 PHP GET 传递布尔值

2022-08-30 18:14:47

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

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

然后我有

$hopefullyBool = $_GET['myVar'];

是布尔值还是字符串?我的假设是,这是一根绳子,但有人能告诉我吗?谢谢$hopefullyBool


答案 1

所有 GET 参数都是 PHP 中的字符串(或字符串数组)。使用filter_var(或filter_input)和:FILTER_VALIDATE_BOOLEAN

返回 TRUE 表示“1”、“true”、“on”和“yes”。否则返回 FALSE

如果设置了FILTER_NULL_ON_FAILURE,则仅对“0”、“false”、“off”、“no”和 “”返回 FALSE,对所有非布尔值返回 NULL

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

对于可以是数组的 INPUT 变量,有filter_var_arrayfilter_input_array

获取布尔类型的另一种方法,将计算结果为或喜欢或:truefalse01

http://example.com/foo.php?myVar=0
http://example.com/foo.php?myVar=1

然后转换为布尔值:

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

如果要传递字符串或另一种方式:truefalse

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

但我想说的是,这是为了这个。filter_varFILTER_VALIDATE_BOOLEAN


答案 2

如果要避免 if 语句:

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

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

推荐