UPDATE:2020年07月03日
PHP の 加算子 と 減算子
1 Minute Note
++ | 加算子(インクリメント) | – – | 減算子(デクリメント) |
- 加算子/減算子 は 値を1ずつ増減
- 加算子/減算子 は 変数のみ適用
- 加算子/減算子 は 数値と文字列に適用
- 加算子/減算子 は bool 型の値には何も変更を加えない
- 加算子/減算子 は NULL に加算子を 適用すると 1
「++(加算子)」と「- -(減算子)」
- 加算子/減算子 は 値を1ずつ増減
- 加算子/減算子 は 変数のみ適用
- 加算子/減算子 は 数値と文字列に適用
- 加算子/減算子 は bool 型の値には何も変更を加えない
- 加算子/減算子 は NULL に加算子を 適用すると 1
「++(加算子)」や「- -(減算子)」はある値を1つずつ増やしたり減らしたりする演算子です。この演算子は変数にのみ適用されます。数値のみでなく文字列が格納された変数に対しても適用することができます。
「++(加算子)」/「- -(減算子)」は 数値や文字列以外の 論理値(boolean)、配列(array)、オブジェクト(object)、リソース(resource)などの値には何も変更を加えません。 同じく NULL に減算子を適用しても何も起こりませんが、NULL に加算子を 適用すると 1 となります。
加算子/減算子の種類
加算子/減算子の種類、優先順位、結合時の評価です。すべての演算子の種類や優先順位はこちらを参照下さい。
演算子 | 名前 | 優先順位 | 結合時の評価 | 例 | 結果 |
---|---|---|---|---|---|
++$a | 前置加算子 | 1 | 結合しない | ++$a | $a に 1 を加え、$a を返します。 |
$a++ | 後置加算子 | 1 | 結合しない | $a++ | $a を返し、$a に1を加えます。 |
– -$a | 前置減算子 | 1 | 結合しない | – -$a | $a から 1 を引き、$a を返します。 |
$a- – | 後置減算子 | 1 | 結合しない | $a- – | $a を返し、$a から 1 を引きます。 |
計算の例
前置加算子 数値 ++$i
1 2 3 4 5 | <!-- サンプルコード --> <?php $i = 10; echo ++$i; ?> |
結果は
となります。
後置加算子 数値 $i++
1 2 3 4 5 6 | <!-- サンプルコード --> <?php $i = 10; echo $i++."<br>\n"; echo $i; ?> |
結果は
11
となります。
前置減算子 数値 – -$i
1 2 3 4 5 | <!-- サンプルコード --> <?php $i = 10; echo --$i; ?> |
結果は
となります。
後置減算子 数値 $i- –
1 2 3 4 5 6 | <!-- サンプルコード --> <?php $i = 10; echo $i--."<br>\n"; echo $i; ?> |
結果は
9
となります。
bool(ブール)型の値に適応
1 2 3 4 5 6 7 8 9 10 | <!-- サンプルコード --> <?php $true = TRUE; $true++; echo "$true<br>\n"; $false = FALSE; $false++; echo "$false<br>\n"; ?> |
結果は
となります。
NULLに加算子を適応
1 2 3 4 5 6 | <!-- サンプルコード --> <?php $null = NULL; $null++; echo "$null<br>\n"; ?> |
結果は
となります。
文字列に加算子を適応
加算子 は文字列を格納した変数に対して変更を加えることが可能です。加算は Perl の習慣に従います。例えば、$a = 'Z'; $a++; とした場合、結果は AA になります。文字列変数に対して減算子で変更を加えることは出来ません。プレーンな ASCII文字と数字(a-z、A-Z、そして 0-9)のみがサポートされています。
文字列 a をインクリメントした場合
1 2 3 4 5 6 7 | アルファベット a に加算子<br> <?php $s = 'a'; for ($n=0; $n<5; $n++) { echo ++$s.'<br>'; } ?> |
結果は
c
d
e
f
となります。
文字列 x をインクリメントした場合
1 2 3 4 5 6 7 | アルファベット x に加算子<br> <?php $s = 'x'; for ($n=0; $n<5; $n++) { echo ++$s.'<br>'; } ?> |
結果は
z
aa
ab
ac
となります。
文字列 zx をインクリメントした場合
1 2 3 4 5 6 7 | アルファベット zx に加算子<br> <?php $s = 'zx'; for ($n=0; $n<5; $n++) { echo ++$s.'<br>'; } ?> |
結果は
zz
aaa
aab
aac
となります。
文字列の数字 A8 をインクリメントした場合
1 2 3 4 5 6 7 | 文字列の数字の挙動 A8 に加算子<br> <?php $s = 'A8'; for ($n=0; $n<6; $n++) { echo ++$s.'<br>'; } ?> |
結果は
B0
B1
B2
B3
B4
となります。
文字列の数字 A08 をインクリメントした場合
1 2 3 4 5 6 7 | 文字列の数字の挙動 A08 に加算子<br> <?php $s = 'A08'; for ($n=0; $n<6; $n++) { echo ++$s.'<br>'; } ?> |
結果は
A10
A11
A12
A13
A14
となります。
文字列の数字 A008 をインクリメントした場合
1 2 3 4 5 6 7 | 文字列の数字の挙動 A008 に加算子<br> <?php $s = 'A008'; for ($n=0; $n<6; $n++) { echo ++$s.'<br>'; } ?> |
結果は
A010
A011
A012
A013
A014
となります。
サンプルコード
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <!-- サンプルコード --> <h3>++$i 前置加算子 数値</h3> <?php $i = 10; echo ++$i; ?> <h3>$i++ 後置加算子 数値</h3> <?php $i = 10; echo $i++."<br>\n"; echo $i; ?> <h3>--$i 前置減算子 数値</h3> <?php $i = 10; echo --$i; ?> <h3>$i-- 後置減算子 数値</h3> <?php $i = 10; echo $i--."<br>\n"; echo $i; ?> <h3>++$s 前置加算子 文字列</h3> <?php $s = 'h'; echo ++$s; ?> <h3>$s++ 後置加算子 文字列</h3> <?php $s = 'h'; echo $s++."<br>\n"; echo $s; ?> <h3>--$s 前置減算子 文字列</h3> <?php $s = 'h'; echo --$s; ?> <h3>$s-- 後置減算子 文字列</h3> <?php $s = 'h'; echo $s--."<br>\n"; echo $s; ?> |
11
$i++後置加算子 数値
10
11
–$i前置減算子 数値
9
$i–後置減算子 数値
10
9
++$s前置加算子 文字列
i
$s++後置加算子 文字列
h
i
–$s前置減算子 文字列
h
$s–後置減算子 文字列
h
h
タグ(=記事関連ワード)
日付
最終更新日:2020年07月03日