スポンサーリンク
スポンサーリンク

演算子の優先順位

php

タイトルの通り、今回は演算の優先順位について書いていきます。
以下の式をご覧ください。

 $a + 3 * 6;

上記の式は+演算子、*演算子が使われていますが、どの演算子を一番最初に
行うのでしょうか。小学校の算数で習った知識だと足し算よりも掛け算を
最初に行います。プログラミングの世界ではも足し算よりも掛け算をまず行います。
数式の規則で、足し算よりも掛け算のほうが、優先順位が高いからです。

PHPの演算子の場合も同じで、上記の式だと「3*6」が評価されてから、
「$a + 18」の評価がされます。演算子の優先順位を変更することができます。
算数と同じように括弧「( )」を使えば、括弧内の式が優先されます。
下記のように書けば「$a + 3」が優先されます。

 ( $a + 3 ) * 6;

同じ優先順位の演算子を使ってみる

同じレベルの優先順位の演算子が同時につかわれた時、
どうなるのか?四則演算の場合は、左から順番に計算される規則になっています。
この演算の順序を左結合(left associative)といいます。

以下の場合は左から評価され、

$a + $b + 10

下記の場合も左から評価されます。

( $a + $b ) + 10

逆に右から評価される演算子もあります。
右結合(right associative)といい、
代入演算子は、右結合の演算子です。
下記の場合は右から評価されます。

$a = $b = 10

下記のように書いたら、

$a = ( $b = 10 )

という、右から順番に評価され、変数$bに10が代入され、次に$aに
値10が代入されます。

・左から優先的に評価される場合は左結合
・右から優先的に評価される場合は右結合

コメント

タイトルとURLをコピーしました