Php 添加任务赢得';t在条件内分配
我(直观)的理解是,在PHP中对整数类型的变量使用加法赋值运算符Php 添加任务赢得';t在条件内分配,php,operators,variable-assignment,addition,Php,Operators,Variable Assignment,Addition,我(直观)的理解是,在PHP中对整数类型的变量使用加法赋值运算符+=,将产生加法结果,同时将左侧操作数增加右侧操作数的值 这种理解似乎是错误的,因此我提出了问题。考虑以下代码片段: $itr = 10; $incr = 10; if ($itr += $incr > 10) { // evaluates as true... echo $itr; // but value of $itr remains unchanged } 为什么它输出10而不是20 使用三元形式也会发生同
+=
,将产生加法结果,同时将左侧操作数增加右侧操作数的值
这种理解似乎是错误的,因此我提出了问题。考虑以下代码片段:
$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.
发生了什么事
Edit:嗯,我发现用括号括住表达式
$itr+=$incr
可以解决明显的问题。不过,一个恰当的解释为什么会很酷。提前感谢。:首先评估
,并导致错误。当强制转换为整数以添加到值时,false
被强制转换为0
因此:
变成:
$itr += ($incr > 10)
$itr += (false)
$itr += 0
在if语句中,您只是评估$itr增加$incr的可能性,但并没有有效地指示PHP这样做。因此,它从不存储新值
$itr += ($incr > 10)
$itr += (false)
$itr += 0