Bak*_*yor 10 php comparison-operators
今天只有我注意到并发现了使用===运算符的重要性.您可以在以下示例中看到它:
$var=0;
if ($var==false) echo "true"; else echo "false"; //prints true
$var=false;
if ($var==false) echo "true"; else echo "false"; //prints true
$var=0;
if ($var===false) echo "true"; else echo "false"; //prints false
$var=false;
if ($var===false) echo "true"; else echo "false"; //prints true
Run Code Online (Sandbox Code Playgroud)
问题是,是否有任何使用===运算符而不是使用==运算符的情况?
Fel*_*ing 13
当然,只有一个例子: array_search()
警告
此函数可能返回布尔值
FALSE,但也可能返回一个非布尔值,其值为FALSE,例如0或"".有关更多信息,请阅读有关布尔值的部分.使用===运算符测试此函数的返回值.
基本上,如果您使用任何函数返回成功但FALSE失败的值,您应该检查结果===以确定(否则为什么会有一个大的红色警告框?;))
进一步的实例:next(),
或作为还提到字符串用作,等current()strpos()stripos()
即使substr()没有明确提及:
返回字符串的提取部分或失败时返回FALSE.
但如果提取的部分是"0"什么呢?它也评估FALSE,但它不是一个错误.
总是选择===结束,==除非你绝对确定你需要==,因为==不是传递性的.而这反过来对你的代码推理很重要.
请考虑以下代码段
if ( $a == $b && $b == $c ) {
// [1] assert: $a == $c
}
Run Code Online (Sandbox Code Playgroud)
任何人都会从if条件推断出断言$a == $c是真的,因为我们习惯于等式关系是传递的.但这并不成立==,例如:
$a = "0";
$b = 0;
$c = null;
Run Code Online (Sandbox Code Playgroud)
现在想想在编写代码时我们经常(有时无意识地)做出这种假设.这可能会导致严重的错误.
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |