
【PHP】インクリメント(++) / デクリメント(–) – 値を1つ増減する
変数の数値を1だけ加算したり減算する演算子があります。
1だけ加算する演算子をインクリメント演算子、1だけ減算する演算子をデクリメント演算子と呼び、プログラミングでは多々使われることがあります。
ここではインクリメントとデクリメントについて解説します。
-
インクリメント(演算子)
-
デクリメント(演算子)
インクリメント・デクリメントとは
インクリメント・デクリメントとは数値型(整数型/浮動小数点数型)の変数に記憶された値を『1』だけ加算・減算することです。
そして、『1』だけ加算する演算子をインクリメント演算子、『1』だけ減算する演算子をデクリメント演算子と呼びます。
基本構文
インクリメント演算子・デクリメント演算子の基本構文は次のようになります。
インクリメント(前置)
++$変数名
インクリメント(後置)
$変数名++
デクリメント(前置)
--$変数名
デクリメント(後置)
$変数名--
変数に、プラス(+)もしくはマイナス(-)を2つ繋げて記述します。
変数の前後どちらでも付けることができますが、前置か後置かでプログラムの処理順序が変わります。
その違いについては次項で解説します。
サンプルコード
基本的なインクリメント・デクリメントの使い方についてサンプルコードで確認しましょう。
<?php
$x = 10;
++$x;
echo $x."\n";
$x++;
echo $x."\n";
--$x;
echo $x."\n";
$x--;
echo $x."\n";
?>
11
12
11
10
プログラムの概要は次のようになります。
行数 | 概要 |
---|---|
3 | $x を10 で初期化 |
5 | で$x の値をインクリメント(前置)($x は10のため、11になる) |
6 | $x の値を出力(11が出力される) |
8 | $x の値をインクリメント(後置)($x は11のため、12になる) |
9 | $x の値を出力(12が出力される) |
11 | $x の値をデクリメント(前置)($xは12のため、11になる) |
12 | $x の値を出力(11が出力される) |
14 | $x の値をデクリメント(後置)($xは11のため、10になる) |
15 | $x の値を出力(10が出力される) |
実行結果から分かる通り、インクリメント演算子・デクリメント演算子は代入演算子を使っていませんが、変数の値を1だけ加算・減算し変更します。
また、前置・後置の違いは演算(加算・減算)するタイミングです。
前置は最初に演算し、後置は最後に演算子ます。
違いを下記のサンプルコードで確認しましょう。
インクリメント(前置)
<?php
$x = 10;
echo ++$x."\n";
echo $x."\n";
?>
11
11
インクリメント(後置)
<?php
$x = 10;
echo $x++."\n";
echo $x."\n";
?>
10
11
前置では最初にインクリメントが実行され、後置では最後にインクリメントが実行されています。
そのため、実行結果では前置ではインクリメント後の値が、後置ではインクリメント前の値が出力されています。
デクリメントの前置・後置も同様の処理になります。
デクリメント(前置)
<?php
$x = 10;
echo --$x."\n";
echo $x."\n";
?>
9
9
デクリメント(後置)
<?php
$x = 10;
echo $x--."\n";
echo $x."\n";
?>
10
9
このように前後によって処理順序が変わるので、意図したプログラムを作れるよう前置・後置の処理順序を覚えておきましょう。
演習問題
次の実行結果になるプログラムを作成してください。
なお、下記条件を満たすものとします。
$num
に10を代入する- 実行結果の数値は
$num
の値 $num
はインクリメントで加算する
14
次の実行結果になるプログラムを作成してください。
なお、下記条件を満たすものとします。
$num
に10を代入する- 実行結果の数値は
$num
の値 $num
はデクリメントで減算する
7
まとめ
インクリメント・デクリメントは変数の値を1だけ加算・減算することで、それらはインクリメント演算子、デクリメント演算子を使って実装します。
この演算子は繰り返し処理(for/foreach/while)と合わせて使うことがある演算子なので、覚えておきましょう。