PHPの奇妙な仕様 – 演算子の優先順位

先日、以下のようなコードが正しく動作しなかった。

$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

言語仕様なので従うしか無いんですが、代入演算子は一番低い優先順位にしてくれないと、直感的でないんですよね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください