Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ';正确';in-Get变量_Php_Get_Boolean_Type Conversion - Fatal编程技术网

Php ';正确';in-Get变量

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,并验证它们是否为这些值之一,或

在PHP中,当URL中有类似“var=true”的内容时,URL中的“true”和“false”是否会被转换为布尔变量,或者它们是否等于文本“true”或“false”?例如,如果url中有“var=false”,则会:


工作?或者,由于变量中包含文本,该变量是否始终为true?

它们作为字符串传递,因此始终为truthy,除非它们是其中一个,其计算结果为false:

  • 空字符串
    '
  • 包含数字0的字符串
    '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'];
    }
}

否,
$\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));