ITHACK
~ みんなのIT部門 ~

【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 $x10で初期化
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

このように前後によって処理順序が変わるので、意図したプログラムを作れるよう前置・後置の処理順序を覚えておきましょう。

演習問題

問題1

次の実行結果になるプログラムを作成してください。
なお、下記条件を満たすものとします。

  • $numに10を代入する
  • 実行結果の数値は$numの値
  • $numはインクリメントで加算する
14

問題2

次の実行結果になるプログラムを作成してください。
なお、下記条件を満たすものとします。

  • $numに10を代入する
  • 実行結果の数値は$numの値
  • $numはデクリメントで減算する
7

まとめ

インクリメント・デクリメントは変数の値を1だけ加算・減算することで、それらはインクリメント演算子、デクリメント演算子を使って実装します。

この演算子は繰り返し処理(for/foreach/while)と合わせて使うことがある演算子なので、覚えておきましょう。