Operator Precedence
CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 20/71。
式に複数の演算子が含まれている場合、PHP は 演算子の優先順位 と呼ばれる特定の順序に従います。数学でも同じように、乗算と除算が加算と減算よりも先に実行されます。
<?php
echo 5 + 3 * 2; // 出力: 11、16 ではなく
?>PHP はまず 3 × 2 を乗算(6 を得る)、次に 5 を加えます。演算子が同じ優先順位だった場合、左から右へ計算します:5 + 3 = 8、次に 8 × 2 = 16 となります。しかし、そうではありません。
学習した演算子の優先順位を、最高から最低の順に示します:
| 優先順位 | 演算子 |
| 最高 | ** (べき乗) |
| 高 | * / % |
| 低 | + - |
デフォルトの順序を上書きするには、括弧を使用します。括弧内の演算は常に最初に評価されます:
<?php
echo (5 + 3) * 2; // 出力: 16
echo 2 ** 3 * 2; // 出力: 16 (8 * 2)
echo 2 ** (3 * 2); // 出力: 64 (2^6)
?>迷ったときは、意図を明確にするために括弧を使用してください。コードを読みやすくし、予期しない結果を防ぎます。
チャレンジ
簡単入力から3つの数値を読み取ります:a、b、およびc。
以下の式の結果を計算し出力します。加算が乗算の前に実行されるように括弧を使用してください:
(a + b) * c ** 2
これは:a と b を最初に加算し、その合計を c の 2 乗で乗算することを意味します。
例:
入力が 2、3、4 の場合、出力は 80 であるべきです。理由は以下の通りです:
- まず、2 + 3 = 5 を計算します
- 次に、4 ** 2 = 16 を計算します
- 最後に、5 * 16 = 80 を計算します
チートシート
PHP は、複数の演算子を含む式を評価する際に 演算子の優先順位 規則に従います:
| 優先度 | 演算子 |
| 最高 | ** (べき乗) |
| 高 | * / % |
| 低 | + - |
<?php
echo 5 + 3 * 2; // Outputs: 11 (multiplication first)
?>デフォルトの順序を上書きするために 括弧 を使用します。括弧内の演算は最初に評価されます:
<?php
echo (5 + 3) * 2; // Outputs: 16
echo 2 ** 3 * 2; // Outputs: 16 (8 * 2)
echo 2 ** (3 * 2); // Outputs: 64 (2^6)
?>自分で試してみよう
<?php
// 入力を読み込む
$a = intval(fgets(STDIN));
$b = intval(fgets(STDIN));
$c = intval(fgets(STDIN));
// TODO: 下にコードを記述して (a + b) * c ** 2 を計算する
// 結果を出力
echo $result;
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators