Get变量中的'true'

Nil*_*ert 13 php boolean get type-conversion

在PHP中,如果URL中有"var = true"之类的URL,URL中的"true"和"false"是否会转换为布尔变量,或者它们是否等于文本"true"或"false" "?例如,如果url中包含"var = false":

if ($_GET['var'] == false) { ... }
Run Code Online (Sandbox Code Playgroud)

工作?或者变量总是为真,因为它中有文本?

Art*_*cto 17

不,$_GET将始终只包含字符串.

但是,您可以过滤它以获得布尔值.

FILTER_VALIDATE_BOOLEAN:
返回TRUE"1","true","on""yes".FALSE否则返回.如果FILTER_NULL_ON_FAILURE设置,FALSE只为返回"0","false","off","no",和"",并NULL返回所有非布尔值.

例:

$value = filter_input(INPUT_GET, "varname", FILTER_VALIDATE_BOOLEAN,
    array("flags" => FILTER_NULL_ON_FAILURE));
Run Code Online (Sandbox Code Playgroud)


Bol*_*ock 15

它们作为字符串传递,因此除非它们是其中之一,否则它们总是很简洁,而是将其评估为false:

  • 空字符串 ''
  • 包含数字零的字符串 '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'];
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Nilbert欢迎来到PHP的基础知识.:)在PHP中隐式地输入类型. (2认同)