$var==false不起作用



我有一个这样的表达式,其中$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)

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

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

您已经用var_dump()解决了自己的问题

string 'false' (length=5)

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

$var === 'false'

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

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

谢谢你的回答。

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

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

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

像一样尝试

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

或者简单地像一样尝试

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

如果您使用的是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

注意@Nathan Bishop的回答。
if( empty($var) ) {
    //$var is false
} else {
   //$var exists and is true
}

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

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

以下值被视为FALSE:

  • 布尔值FALSE本身
  • 整数0(零)
  • 浮点0.0(零)
  • 空字符串和字符串"0"
  • 零元素数组
  • 成员变量为零的对象(仅限PHP 4)
  • 特殊类型NULL(包括未设置的变量)
if (! isset($var) || (isset($var) && $var == 'false')) {
           echo 'false';
    }
    else if ((isset($var)) && ($var == 'true')) {
           echo 'true';
    }

使用此代码。如果任何值被分配给一个变量,那么在布尔表达式中它将被认为是真的。这就是为什么执行第二个条件。

相关内容

最新更新