我的(直观)理解是在PHP中使用加法赋值运算符+=
表示整数类型的变量会产生加法结果,而左侧操作数的加法值则会增加同时操作数。
这种理解似乎是错误的,因此我的问题。考虑以下代码片段:
$itr = 10;
$incr = 10;
if ($itr += $incr > 10) { // evaluates as true...
echo $itr; // but value of $itr remains unchanged
}
为什么输出10而不是20?
使用三元形式也是如此:
echo ($itr += $incr > 10) ? $itr : 'neverhere'; // prints 10
// Note: I know that parentheses aren't really necessary here, it's just a personal practice.
发生了什么事?
编辑:好吧,我发现围绕带括号的$itr += $incr
表达式修复了明显的问题。不过,正确解释为什么会非常酷。我提前感谢。
答案 0 :(得分:1)
Operator precedence:首先评估>
并导致false
。当投放到一个整数以添加到您的值时,false
会投放到0
。
所以:
$itr += $incr > 10
变为:
$itr += ($incr > 10)
$itr += (false)
$itr += 0
答案 1 :(得分:0)
在if语句中,你只是在评估$ itr增加$ incr的可能性,但你并没有有效地指导PHP来做这件事。因此它永远不会存储新值。