六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

PHP、演算子の優先順位

 PHPには多数の演算子がある。その優先順位は21段階にも及ぶ。

 

※上のものほど先に実行される

演算子の優先順位
結合時の評価演算子追加情報
結合しない clone new clone および new
left [ array()
right ** 代数演算子
right ++ -- ~ (int) (float) (string) (array) (object) (bool) @ および 加算子/減算子
結合しない instanceof
right ! 論理演算子
left * / % 代数演算子
left + - . 代数演算子 そして 文字列演算子
left << >> ビット演算子
結合しない < <= > >= 比較演算子
結合しない == != === !== <> 比較演算子
left & ビット演算子 そして リファレンス
left ^ ビット演算子
left | ビット演算子
left && 論理演算子
left || 論理演算子
left ? : 三項演算子
right = += -= *= **= /= .= %= &= |= ^= <<= >>= => 代入演算子
left and 論理演算子
left xor 論理演算子
left or 論理演算子
left , さまざまな利用法

出典:PHP: 演算子の優先順位 - Manual

 

絶望的な気持ちになった。これを全部覚えるなんて死んでしまう。ところがProgramming PHPを読んでいたら、ありがたいアドバイスがあった。

One way many programmers deal with the complex precedence rules in programming languages is to reduce precedence down to two rules:
• Multiplication and division have higher precedence than addition and subtraction.
• Use parentheses for anything else. 

 

(適当訳)プログラミング言語の複雑な優先順位のルールに対して、多くのプログラマーは次の2つのルールに絞って対処する:

・掛け算割り算は足し算引き算より優先順位が高い

・あとはカッコに入れる

 なんだ自分がいつもやってることじゃないの!!あーよかった。