if语句在php中不起作用

DSc*_*ipt 7 php if-statement

当试图熟悉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罚款时,工作10来代替truefalse.为什么会这样?

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)


Luk*_*uke 7

PHP在if表达式中做了一些偷偷摸摸的事情.以下值被视为FALSE:

  • 布尔值FALSE本身
  • 整数0(零)
  • 浮点数0.0(零)
  • 空字符串,字符串"0"
  • 一个零元素的数组
  • 一个零成员变量的对象(仅限PHP 4)
  • 特殊类型NULL(包括未设置的变量)
  • 从空标签创建的SimpleXML对象

每个其他值都被视为TRUE(包括任何资源).

你实际上是在传递一个字符串,表示单词false,而不是false本身.因为这不在上面的列表中,它实际上被认为是真的!