Cha*_*han 12 php comparison if-statement
例如,与$ variable === true有什么不同?
<?php
if (true === $variable) {
//
}
if (1 === intval($variable)) {
//
}
Run Code Online (Sandbox Code Playgroud)
rua*_*akh 14
它们是等价的.
一些程序员更喜欢这种"Yoda风格",以避免意外写入的风险:
if ($variable = true) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
,相当于
$variable = true;
// ...
Run Code Online (Sandbox Code Playgroud)
,当他们打算写
if ($variable === true) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
(但if (true = $variable)会产生明显的错误而不是潜在的微妙错误).
简短的回答
有些人这样做是为了避免=在真正意图使用比较运算符(==或===)时错误地使用赋值运算符().
答案很长
在PHP中有3个运算符可以被误认为是彼此:
= 是赋值运算符== 是"等于"运算符=== 是"相同的"运营商第一个运算符仅用于为变量赋值.第二个和第三个仅用于比较两个值或表达式.
在PHP有可能的值分配给变量内部控制结构(if,for,while等等).如果你不小心,这可能会导致问题.例如,如果要与$a布尔值进行比较,可以这样做:
if ($a == false) // or
if ($a === false)
Run Code Online (Sandbox Code Playgroud)
但是,如果你不小心,它可能最终会像这样:
if ($a = false)
Run Code Online (Sandbox Code Playgroud)
...这是完全合法的代码,但它是一项任务,最终会导致问题.它会导致问题的原因是因为表达式$a=false将被评估并且代码将继续运行,就像没有任何错误一样,而事实上它并非意图.
之所以有些人围绕操作数切换,比较对文字的值时(固定值,如true,false,7,5.2,等),是因为它是不可能的值赋给一个文字.例如:
if (false = $a)
Run Code Online (Sandbox Code Playgroud)
...会导致错误,告诉程序员他们犯了错误,然后他们可以修复.
| 归档时间: |
|
| 查看次数: |
1381 次 |
| 最近记录: |