PHP 復習メモ - 論理演算子 && and || or

PHP の落とし穴シリーズ。
(ちなみに PHP のバージョンは 5.5.9 です)

PHP の論理演算子の論理積と論理積には "&&"、"and"、"||"、"or" がありますが、 && は、and の別名や古い記法ではありません。 演算の優先順位が異なっている別の演算子なのです。

次のような 2つの処理では、結果が変わることがあります。

# 1
$result = func1() && func2();
# 2
$result = func1() and func2();

and は代入演算子より優先順位が低いため 以下のように解釈されます。

# 1'
$result = (func1() && func2());
# 2'
($result = func1()) and func2();

関数 func1() が true を返し、 関数 func2() が false を返す場合 変数 $result には #1 は、false が格納されますが #2 は、true が格納されます。

|| と or の関係も同じです。

ちゃんとカッコで囲んでおけば大丈夫ですが、 とりあえずは && と || を使うようにしておけば良いのかなと思います。

Google サイト内検索

Amazonアソシエイト