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