先日、以下のようなコードが正しく動作しなかった。
$flag = $flag_a and $flag_b and $flag_c; if ( $flag ) { ... }
以下のように修正すると正しく動作する。
if ( $flag_a and $flag_b and $flag_c ) { ... }
または
$flag = $flag_a && $flag_b && $flag_c; if ( $flag ) { ... }
原因は、演算子の優先順位。
&& > = > and
言語仕様なので従うしか無いんですが、代入演算子は一番低い優先順位にしてくれないと、直感的でないんですよね。