我有一个这样的表达式,其中$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
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';
}
使用此代码。如果任何值被分配给一个变量,那么在布尔表达式中它将被认为是真的。这就是为什么执行第二个条件。