当试图熟悉ifPHP中的语句时,就发生了这种情况.我第一次尝试下面的代码.
if(true) {echo 'true';} else {echo 'false';}
Run Code Online (Sandbox Code Playgroud)
输出就是true条件true.同样,当条件是false(if(false))它回声false.
但我尝试使用变量作为条件,同时更改变量的值.
$con='false';
if($con){echo 'true';} else{echo 'false';}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,true即使变量值为false或,输出也是如此true.与此同时,该if statement罚款时,工作1和0来代替true和false.为什么会这样?
Han*_*nky 10
$con='false';
Run Code Online (Sandbox Code Playgroud)
这'false'是一个非布尔的有效字符串FALSE,就像$con='hi';不是.
$con=FALSE; //this is false now
Run Code Online (Sandbox Code Playgroud)
引用手册
要指定布尔文字,请使用常量TRUE或FALSE.两者都不区分大小写.
另请阅读您拥有的其他选项
转换为布尔值时,以下值被视为FALSE:
◦布尔
值为FALSE本身◦整数0(零)
◦浮点数0.0(零)
◦空字符串,字符串"0"
◦包含零元素的数组
◦一个零成员变量的对象(仅限PHP 4)
◦特殊类型NULL(包括未设置的变量)
◦从空标签创建的SimpleXML对象
然后你观察到了这一点
同时,当使用1和0时if语句正常工作而不是true和false.为什么会这样?
这是因为任何形式的0都是FALSE,无论是字符串还是数字.但false由于上述原因,作为字符串的文本不是假的.
自从你学习以来,还阅读有关PHP Strict Comparisons的内容,因为
var_dump(0==FALSE); //bool(true)
var_dump(0===FALSE); //bool(false) :)
Run Code Online (Sandbox Code Playgroud)
PHP在if表达式中做了一些偷偷摸摸的事情.以下值被视为FALSE:
每个其他值都被视为TRUE(包括任何资源).
你实际上是在传递一个字符串,表示单词false,而不是false本身.因为这不在上面的列表中,它实际上被认为是真的!