0

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

8 回答 8

2

您可以编写如下逻辑:

if (isset($var) && $var) {
   // Do other thing
} else {
   // Do something
}
于 2013-06-24T05:37:30.560 回答
2

你已经用 var_dump() 回答了你自己的问题

string 'false' (length=5)

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

$var === 'false'
于 2013-06-24T07:17:21.030 回答
1

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

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

感谢您的回答。

于 2013-06-24T05:55:46.820 回答
1

我认为你试图用这个

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

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

于 2013-06-24T05:38:42.360 回答
0

试试喜欢

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

或者干脆试试

if ( !isset($var) || ( !$var )) {
于 2013-06-24T05:35:01.950 回答
0

注意@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(包括未设置的变量)
于 2013-06-24T12:22:14.993 回答
0
if (! isset($var) || (isset($var) && $var == 'false')) {
           echo 'false';
    }
    else if ((isset($var)) && ($var == 'true')) {
           echo 'true';
    }

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

于 2013-06-24T05:54:29.950 回答
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

于 2013-06-24T06:26:20.490 回答