Php ';正确';in-Get变量
在PHP中,当URL中有类似“var=true”的内容时,URL中的“true”和“false”是否会被转换为布尔变量,或者它们是否等于文本“true”或“false”?例如,如果url中有“var=false”,则会:Php ';正确';in-Get变量,php,get,boolean,type-conversion,Php,Get,Boolean,Type Conversion,在PHP中,当URL中有类似“var=true”的内容时,URL中的“true”和“false”是否会被转换为布尔变量,或者它们是否等于文本“true”或“false”?例如,如果url中有“var=false”,则会: 工作?或者,由于变量中包含文本,该变量是否始终为true?它们作为字符串传递,因此始终为truthy,除非它们是其中一个,其计算结果为false: 空字符串' 包含数字0的字符串'0' 为了让我的生活更轻松,我只需将布尔GET变量传递为1或0,并验证它们是否为这些值之一,或
工作?或者,由于变量中包含文本,该变量是否始终为true?它们作为字符串传递,因此始终为truthy,除非它们是其中一个,其计算结果为false:
- 空字符串
'
- 包含数字0的字符串
'0'
1
或0
,并验证它们是否为这些值之一,或者适当地确定默认值:
// Default value of false
$var = false;
if (isset($_GET['var']))
{
if ($_GET['var'] === '1' || $_GET['var'] === '0')
{
$var = (bool) $_GET['var'];
}
}
否,
$\u GET
将始终仅包含字符串
但是,您可以使用它来获得布尔值
FILTER\u VALIDATE\u BOOLEAN
:对于
“1”
、“TRUE”
、“on”
和“yes”
,返回TRUE
。否则返回FALSE
。
如果设置了过滤器
,仅对“0”
,“FALSE”
,“off”
,“no”
和”
,对所有非布尔值返回NULL
例如:
$value = filter_input(INPUT_GET, "varname", FILTER_VALIDATE_BOOLEAN,
array("flags" => FILTER_NULL_ON_FAILURE));
哇php有类型转换,这意味着它是以C++的另一种方式吗?好极了@Nilbert:@Nilbert欢迎学习PHP的基础知识。:)类型一直在PHP中隐式转换。”|$_GET['var']=='0'”条件分支在这里是多余的。if(isset($\u GET['var'])&&&$\u GET['var']=='1'){$var=true;}@BoltClock:是的,您的示例非常好,因为它非常学术且易于理解。它分解得很好,说明了开发人员在解决此类任务时应该如何思考。有点怪异,但非常方便,+1。@zerkms很好,但您将有一个正确的类型变量,无需检查isset
,并且标志当然是可选的。
$value = filter_input(INPUT_GET, "varname", FILTER_VALIDATE_BOOLEAN,
array("flags" => FILTER_NULL_ON_FAILURE));