$ var == false无效

时间:2013-06-24 05:34:05

标签: php codeigniter

我有一个这样的表达式,其中$ var的值为false:

    if (! isset($var) || (isset($var) && $var == false)) {
           // This should be executed
    }
    else if (isset($var) && $var == true) {
           // This is executed
    }

我想要执行第一个表达式。上面的代码有什么问题? 请帮帮我

var_dump($ dump)的输出:

    string 'false' (length=5)

8 个答案:

答案 0 :(得分:2)

您可以按如下方式编写逻辑:

if (isset($var) && $var) {
   // Do other thing
} else {
   // Do something
}

答案 1 :(得分:2)

你已经用var_dump()

回答了你自己的问题
string 'false' (length=5)

您正在尝试将字符串与布尔值进行比较。尝试:

$var === 'false'

答案 2 :(得分:1)

我认为你正试图用这个做什么

if (! isset($var) || (isset($var) && $var == false))

正是空函数的定义(或者它实际上是否定的)。请参阅此处的手册页http://php.net/empty

答案 3 :(得分:1)

false的值来自get请求,我应该这样做:

    if (! isset($var) || ( isset($var) && $var == 'false' ))

感谢您的回答。

答案 4 :(得分:0)

尝试

if ( !isset($var) || ( isset($var) && !$var )) {
       // Do something
}
else if ( isset($var) && $var ) {
       // Do other thing
}

或者只是尝试

if ( !isset($var) || ( !$var )) {

答案 5 :(得分:0)

if (! isset($var) || (isset($var) && $var == 'false')) {
           echo 'false';
    }
    else if ((isset($var)) && ($var == 'true')) {
           echo 'true';
    }

使用此代码。如果为变量赋值,则在布尔表达式中将其视为真。这就是执行第二个条件的原因。

答案 6 :(得分:0)

如果您正在使用codeigniter并且$var的值来自get请求,那么您不需要键入这样的长表达式。这也可以。

if( !$this->input->get('get_variable_name') ) {
 // Do something
} else {
 // Do other thing
}

isset是由codeigniter本身完成的。有关更多信息,请访问以下链接。

http://ellislab.com/codeigniter/user-guide/libraries/input.html

答案 7 :(得分:0)

请注意@Nathan Bishop的答案。

if( empty($var) ) {
    //$var is false
} else {
   //$var exists and is true
}
  

确定变量是否为空。如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在,则empty()不会生成警告。   Source PHP.net

如果你想在你的url查询中使用true的false值,那么使用“1”表示true,“0”表示false

以下值被视为FALSE:

  • 布尔值FALSE本身
  • 整数0(零)
  • 浮点数0.0(零)
  • 空字符串,字符串“0”
  • 包含零元素的数组
  • 一个零成员变量的对象(仅限PHP 4)
  • 特殊类型NULL(包括未设置的变量)