PHP中的true/false如何工作?

Moo*_*oon 50 php

我想知道PHP如何在内部处理真/假比较.据我所知,true定义为1,false定义为0.当我这样做时if("a"){ echo "true";},回声为" true ".PHP如何将"a"识别为1?

Mar*_*ers 99

有关布尔值类型比较表的PHP文档中对此进行了介绍.

转换为布尔值时,以下值被视为FALSE:

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

其他每个值都被视为TRUE.

  • 请注意,当 @MarkByers 说“字符串“0””时,这是完全正确的。例如,字符串“00”、字符串“0.0”、“\0”等同样不会输出 false。 (2认同)
  • 您应该在答案中添加以下内容:要检查 var 是否确实是布尔值,必须与“===”运算符一起使用严格比较,而不是与常用的“==”运算符一起使用。 (2认同)

aki*_*uri 11

因为我已经多次访问此页面,所以我决定发布一个示例(松散的)比较测试。

结果:

""         -> false
"0"        -> false
"0.0"      -> true
"1"        -> true
"01"       -> true
"abc"      -> true
"true"     -> true
"false"    -> true
"null"     -> true
0          -> false
0.1        -> true
1          -> true
1.1        -> true
-42        -> true
"NAN"      -> true
0          -> false
NAN        -> true
null       -> false
true       -> true
false      -> false
[]         -> false
[""]       -> true
["0"]      -> true
[0]        -> true
[null]     -> true
["a"]      -> true
{}         -> true
{}         -> true
{"t":"s"}  -> true
{"c":null} -> true
Run Code Online (Sandbox Code Playgroud)

测试代码:

""         -> false
"0"        -> false
"0.0"      -> true
"1"        -> true
"01"       -> true
"abc"      -> true
"true"     -> true
"false"    -> true
"null"     -> true
0          -> false
0.1        -> true
1          -> true
1.1        -> true
-42        -> true
"NAN"      -> true
0          -> false
NAN        -> true
null       -> false
true       -> true
false      -> false
[]         -> false
[""]       -> true
["0"]      -> true
[0]        -> true
[null]     -> true
["a"]      -> true
{}         -> true
{}         -> true
{"t":"s"}  -> true
{"c":null} -> true
Run Code Online (Sandbox Code Playgroud)

概括:

  • ===完成严格 ( ) 比较后,除true返回之外的所有内容都返回false
  • 空字符串 ( "") 为假
  • 只包含0( "0")的字符串是假的
  • NAN 是真的
  • 空数组 ( []) 为假
  • 包含假值的容器(数组、对象、字符串)是真值
    • 一个例外是0""(见第三项)


Byr*_*ock 5

零是假的,非零是真的.

在php中,您可以使用===运算符更明确地进行测试.

if (0==false) 
    echo "works"; // will echo works

if (0===false) 
    echo "works"; // will not echo anything
Run Code Online (Sandbox Code Playgroud)