Get变量中的'true'

时间:2010-08-02 04:15:08

标签: php get boolean type-conversion

在PHP中,如果URL中有“var = true”之类的内容,则URL中的“true”和“false”会转换为布尔变量,还是等于文本“true”还是'假'?例如,如果url中包含“var = false”:

if ($_GET['var'] == false) { ... }

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

2 个答案:

答案 0 :(得分:17)

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

但是,您可以filter获取布尔值。

  

FILTER_VALIDATE_BOOLEAN
  返回TRUE"1""true""on"的{​​{1}}。否则返回"yes"。   如果设置了FALSE,则仅FILTER_NULL_ON_FAILUREFALSE"0""false""off"都会返回"no",所有非布尔值都会返回""

示例:

NULL

答案 1 :(得分:15)

它们是作为字符串传递的,所以除非它们是其中之一,否则它们总是很简单,而是评价为false:

  • 空字符串''
  • 包含数字零'0'
  • 的字符串

为了让我的生活更轻松,我只需将布尔GET变量作为10传递,并将它们验证为其中一个值,或者适当地确定默认值:

// Default value of false
$var = false;

if (isset($_GET['var']))
{
    if ($_GET['var'] === '1' || $_GET['var'] === '0')
    {
        $var = (bool) $_GET['var'];
    }
}