真/假在PHP中是如何工作的?
2022-08-30 09:10:26
我想知道PHP如何在内部处理真/假比较。我理解true被定义为1,false被定义为0。当我这样做时,它呼应“真实”。PHP 如何将“a”识别为 1?if("a"){ echo "true";}
我想知道PHP如何在内部处理真/假比较。我理解true被定义为1,false被定义为0。当我这样做时,它呼应“真实”。PHP 如何将“a”识别为 1?if("a"){ echo "true";}
因为我已经多次访问了这个页面,所以我决定发布一个示例(松散的)比较测试。
结果:
"" -> 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
测试代码:
class Vegetable {}
class Fruit {
public $t = "s";
}
class Water {
public $c = null;
}
$cases = [
"",
"0",
"0.0",
"1",
"01",
"abc",
"true",
"false",
"null",
0,
0.1,
1,
1.1,
-42,
"NAN",
(float) "NAN",
NAN,
null,
true,
false,
[],
[""],
["0"],
[0],
[null],
["a"],
new stdClass(),
new Vegetable(),
new Fruit(),
new Water(),
];
echo "<pre>" . PHP_EOL;
foreach ($cases as $case) {
printf("%s -> %s" . PHP_EOL, str_pad(json_encode($case), 10, " ", STR_PAD_RIGHT), json_encode( $case == true ));
}
总结:
===
true
false
""
0
"0"
NAN
是真实的[]
0
""