基与php运算符的优先级的一个小问题 Posted on 2019-07-11 最近又重读了一遍《PHP核心技术与最佳实践》(第二版). 在看到第404页,也就是opcache这一章节的最后一部分中出现了这么一串代码 1234567$a = 3; $b = 5;if($a = 5 || $b = 7){ $a++; $b++;}echo $a . " " .$b; 我乍一看绝对输出应该是 6 6.但实际跑了之后发现最终输出竟然是 1 6.搞得我非常疑惑. 后来想到运算符优先级的问题才发现, =是php运算符中优先级最低的, ||和&&的运算等级都比它高,所以我以为运行流程是这样的 1234// 错误示范if(($a = 5) || ($b = 7)){ $a++; $b++;} 但实际运行流程是这样的 1234// 正确示范if($a = (5 || $b = 7))/* ($a = true) */{ $a++; $b++;} 真是细节决定成败啊.