UPDATE:2019年11月15日
PHP の 算術演算子(代数演算子)
1 Minute Note
+ | 加算(足す) | – | 減算(引く) |
* | 乗算(掛ける) | / | 除算(割る) |
% | 剰余(あまり) |
算術演算子(代数演算子)とは
- 算術演算子は
+(足す) -(引く) *(掛ける) /(割る) %(余り)
算術演算子は一般的な計算「+(足す)」「-(引く)」「*(掛ける)」「/(割る)」「%(余り)」を行うものです。計算の優先順位や結合時の評価は以下の表を確認して下さい。
1 2 3 4 5 6 7 8 9 10 11 12 | <?php echo 1 + 2; //3 echo"<br>\n"; echo 2 - 1; //1 echo"<br>\n"; echo 10 * 20; //200 echo"<br>\n"; echo 45 / 9; //5 echo"<br>\n"; echo 47 % 9; //2 echo"<br>\n"; ?> |
結果は
1
200
5
2
となります。
算術演算子の種類
算術演算子の種類、優先順位、結合時の評価です。すべての演算子の種類や優先順位はこちらを参照下さい。
演算子 | 名前 | 優先順位 | 結合時の評価 | 例 | 結果 |
---|---|---|---|---|---|
+ | 加算 | 2 | left | $a + $b | $a および $b の和 |
– | 減算 | left | $a – $b | $a と $b の差 | |
* | 乗算 | 1 | left | $a + $b | $a および $b の積 |
/ | 除算 | left | $a / $b | $a および $b の商 | |
% | 剰余 | left | $a % $b | $a を $b で割った余り |
算術演算子の注意点
- 除算演算子 「/」 の返す値は浮動小数点数となります。ただし、2つのオペランド(演算子の対象となる値)が両方とも整数値 (あるいは整数に変換できる文字列) であり、そして、返す値が割り切れる場合には整数値を返します。
- 剰余演算子「%」は、オペランドを整数に変換(小数点以下切捨)してから計算を行います。
- 剰余演算子「%」の計算結果の値の符号は、被除数の符号と同じになります。 $a % $b の場合、計算結果の符号は $a と同じになります。
除算演算子「/」割り切れる場合、値は整数型となる。
1 2 3 | <?php $i = 45 / 9; //割り切れる if(is_int($i)) echo '整数型'; |
結果は
除算演算子「/」割り切れない場合、値は浮動小数点型となる。
1 2 3 | $i = 47 / 9; //割り切れない if(is_float($i)) echo '浮動小数点型'; ?> |
結果は
剰余演算子「%」は、オペランドを整数に変換(小数点以下切捨)してから計算を行います。オペランドが浮動小数点型でも計算結果の値のデータ型は整数型になります。ですが、オペランドとして計算した変数のデータ型自体は変化しません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php //浮動小数点数 $a = 47.8; $b = 9.9; //計算 echo $a % $b; //2 echo"<br>\n"; //データ型 if(is_int($a % $b)) echo '整数型'; echo"<br>\n"; //変数の値 echo $a; echo"<br>\n"; echo $b; echo"<br>\n"; ?> |
結果は
整数型
47.8
9.9
剰余演算子「%」の計算結果の値の符号は、被除数の符号と同じになります。
1 2 3 4 5 6 7 8 | <?php <?php $a = -47; $b = 9; //計算 echo $a % $b; //-2 ?> |
結果は
計算の優先順位と結合順
加算減算
1 2 3 4 | <!-- サンプルコード --> <?php echo 5 + 10 -7; ?> |
結果は
となります。
5 + 10 で 15 となり 15 – 7 で 8 となります。
優先順位が同じ演算子が使用された場合は結合順に従います。結合順はleftなので左から順番に計算します。
乗算除算剰余
1 2 3 4 | <!-- サンプルコード --> <?php echo 10 * 8 / 2 % 6; ?> |
結果は
となります。
10 * 8 で 80 となり 80 / 2 で 40 となり 40 % 6 で余り 4 となります。
優先順位が同じ演算子が使用された場合は結合順に従います。結合順はleftなので左から順番に計算します。
乗算加算
1 2 3 4 | <!-- サンプルコード --> <?php echo 10 * 8 + 2; ?> |
結果は
となります。
10 * 8 で 80 となり 80 + 2 で 82 となります。
乗算の優先順位が加算より高いので乗算を先に行います。
乗算除算加算減算
1 2 3 4 | <!-- サンプルコード --> <?php echo 5 * 5 + 10 / 5 - 2; ?> |
結果は
となります。
5 * 5 で 25 となり 10 / 5 で 2 となり 25 + 2 で 27 となり 27 – 2 で 25 となります。
乗算と除算を左から先に行い、加算と減算を左から後で行います。
「()」の使用
1 2 3 4 | <!-- サンプルコード --> <?php echo 6 * (3 + 2); ?> |
結果は
となります。
3 + 2 で 5 となり 6 * 5 で 30 となります。
「()」内が優先して計算されます。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <!-- サンプルコード --> <h3>加算減算</h3> <?php $i = 5 + 10 -7; echo $i; ?> <h3>乗算除算剰余</h3> <?php $i = 10 * 8 / 2 % 6; echo $i; ?> <h3>加算乗算</h3> <?php $i = 10 * 8 + 2; echo $i; ?> <h3>乗算除算加算減算</h3> <?php $i = 5 * 5 + 10 / 5 - 2; echo $i; ?> <h3>「()」の使用</h3> <?php $i = 6 * (3 + 2); echo $i; ?> |
8
乗算除算剰余
4
加算乗算
82
乗算除算加算減算
25
「()」の使用
30
PHPの演算子
演算子の種類
種類 | 説明 |
算術演算子(代数演算子) | 算術演算子(代数演算子)は「足す」「引く」「掛ける」「割る」「余り」 |
---|---|
代入演算子 | 代入演算子は変数に値を代入したり、変数の値を更新する |
ビット演算子 | ビット演算子は、整数値をビット値で演算 ビットはコンピュータが処理する最小単位 |
比較演算子 | 比較演算子は左右のオペランドを比較する 結果と「true(真)」「false(偽)」で返す |
加算子(インクリメント演算子)・減算子(デクリメント演算子) | 加算子/減算子は値を1ずつ増減 |
文字列演算子 | 文字列演算子は結合と結合代入の2種類 |
論理演算子 | 論理演算子は論理値を評価し論理値を返す |
キャスト演算子 | キャスト演算子は右辺オペランドのデータ型を指定した型にする |
エラー制御演算子 | エラー制御演算子 @ を式の前に付けると式のエラーは無視される |
実行演算子 | PHPは実行演算子「“(バッククォート)」をサポート |
条件演算子(三項演算子) | (条件式) ? 真の場合の式 : 偽の場合の式; |
配列演算子 | 配列演算子は配列を統合したり比較したりする |
演算子の優先順位
- 演算子は計算の優先順位がある
PHPの演算子 早見表 | |||||
---|---|---|---|---|---|
優先 順位 | 演算子 | 名前 | 種類 | 結合時の 評価 | 働き |
19 | new | new | new | 結合なし | 新規オブジェクト作成 |
18 | [ | array() | array() | left | 配列の添字 |
17 | ++ | 加算子 | 加算子 | 結合なし | 増加 |
-- | 減算子 | 減算子 | 結合なし | 減少 | |
~ | ビット否定 | 型 ビット演算子 | right | ビット反転 | |
(int) (float) (string) (array) (object) (bool) | キャスト | 型 キャスト演算子 | right | 整数型へ変換 浮動小数点型へ変換 文字列型へ変換 配列型へ変換 オブジェクト型へ変換 論理型へ変換 | |
@ | エラー制御 | 型 エラー制御演算子 | right | エラー制御 | |
instanceof | 型 | 型 | 結合なし | ||
! | 論理否定(NOT) | 論理演算子 | right | 論理否定(NOT) | |
16 | * / % | 乗算 除算 剰余 | 代数演算子 | left | 乗算 除算 剰余 |
15 | + - . | 加算 減算 文字列結合 | 代数演算子 代数演算子 文字列演算子 | left | 加算 減算 文字列結合 |
14 | << >> | 左シフト 右シフト | ビット演算子 | left | ビット単位左シフト ビット単位右シフト |
13 | < <= > >= | より小さい より小さいか等しい より大きい より大きいか等しい | 比較演算子 | 結合なし | より小さい より小さいか等しい より大きい より大きいか等しい |
12 | == != === !== <> <=> | 等しい 等しくない 同じ 同じでない 等しくない 宇宙船 | 比較演算子 | 結合なし | 値が等しい 値が等しくない 値と型が同じ 値と型が同じでない 値が等しくない 値がより小さい 等しい より大きい |
11 | & | ビット積(AND) | ビット演算子 | left | ビット積(AND) |
10 | ^ | ビット排他的論理和(XOR) | ビット演算子 | left | ビット排他的論理和(XOR) |
9 | | | ビット和(OR) | ビット演算子 | left | ビット和(OR) |
8 | && | 論理積(AND) | 論理演算子 | left | 論理積(AND) |
7 | || | 論理和(OR) | 論理演算子 | left | 論理和(OR) |
6 | ?? | NULL合体演算子 | NULL合体演算子 | right | |
6 | ? : | 三項演算子 (条件演算子) | 三項演算子 (条件演算子) | left | 条件演算子 |
5 | = += -= *= **= /= %= .= &= |= ^= ~= <<= >>= => | 代入 加算代入 減算代入 乗算代入 累乗代入 除算代入 乗算代入 連結代入 ビットAND代入 ビットOR代入 ビットXOR代入 ビット否定 左シフト代入 右シフト代入 配列値代入 | 代入演算子 | right | 操作結果の代入 |
4 | and | 論理積(AND) | 論理演算子 | left | 論理積(AND) |
3 | xor | 排他的論理和(XOR) | 論理演算子 | left | 排他的論理和(XOR) |
2 | or | 論理和(OR) | 論理演算子 | left | 論理和(OR) |
1 | , | さまざまな利用法 | さまざまな利用法 | left | リストの区切り |
タグ(=記事関連ワード)
日付
最終更新日:2019年11月15日