【PHP】インクリメント(++) / デクリメント(–) – 変数の値を1変化させる

【PHP】インクリメント(++) / デクリメント(–) – 変数の値を1変化させる

整数型や浮動小数点数型の変数の数値を1だけ変化させる演算があります。

ここではその演算であるインクリメントとデクリメントについて解説します。

検証環境

インクリメント

インクリメントは整数型や浮動小数点数型の変数の値を1加算する演算です。

演算子(加算子)は++で表し、前置加算子と後置加算子の2つの使い方があります。

この2つの違いはインクリメントの実行タイミングです。

前置加算子

前置加算子は対象変数の“値を1加算”した後に“値を参照”します。

基本構文

++変数

サンプル

<?php

$num = 10;

___ih_hl_start
$result = ++$num;
___ih_hl_end

echo '[ $num ]    : ' . $num . "\n";
echo '[ $result ] : ' . $result . "\n";

?>
$ php sample.php
[ $num ]    : 11
[ $result ] : 11

++$numで前置加算子を使用しています。

5行目の処理は、初めに前置加算子によって$numをインクリメントし、$numの値が11になります。

次に$numの値(11)を参照し、$resultに代入します。

実行結果から$num$resultの値は11であることが分かります。

後置加算子

後置加算子は対象変数の“値を参照”した後に“値を1加算”します。

基本構文

変数++

サンプル

<?php

$num = 10;

___ih_hl_start
$result = $num++;
___ih_hl_end

echo '[ $num ]    : ' . $num . "\n";
echo '[ $result ] : ' . $result . "\n";

?>
$ php sample.php
[ $num ]    : 11
[ $result ] : 10

$num++で後置加算子を使用しています。

5行目の処理は、初めに$numの値(10)を参照し、$resultに代入します。

次に後置加算子によって$numをインクリメントし、$numの値が11になります。

実行結果から$resultの値は$numをインクリメントする前の値である10が記憶されたことが分かります。


このように前置と後置はいずれも変数の値をインクリメントしますが、前置は値を参照する前、後置は値を参照した後にインクリメントを実行します。

デクリメント

デクリメントは整数型や浮動小数点数型の変数の値を1減算する演算です。

演算子(減算子)は--で表し、前置減算子と後置減算子の2つの使い方があります。

この2つの違いはデクリメントの実行タイミングです。

前置減算子

前置減算子は対象変数の“値を1減算”した後に“値を参照”します。

基本構文

--変数

サンプル

<?php

$num = 10;

___ih_hl_start
$result = --$num;
___ih_hl_end

echo '[ $num ]    : ' . $num . "\n";
echo '[ $result ] : ' . $result . "\n";

?>
$ php sample.php
[ $num ]    : 9
[ $result ] : 9

--$numで前置減算子を使用しています。

5行目の処理は、初めに前置減算子によって$numをデクリメントし、$numの値が9になります。

次に$numの値(9)を参照し、$resultに代入します。

実行結果から$num$resultの値は9であることが分かります。

後置減算子

後置減算子は対象変数の“値を参照”した後に“値を1減算”します。

基本構文

変数--

サンプル

<?php

$num = 10;

___ih_hl_start
$result = $num--;
___ih_hl_end

echo '[ $num ]    : ' . $num . "\n";
echo '[ $result ] : ' . $result . "\n";

?>
$ php sample.php
[ $num ]    : 9
[ $result ] : 10

$num--で後置減算子を使用しています。

5行目の処理は、初めに$numの値(10)を参照し、$resultに代入します。

次に後置減算子によって$numをデクリメントし、$numの値が9になります。

実行結果から$resultの値は$numをデクリメントする前の値である9が記憶されたことが分かります。


このように前置と後置はいずれも変数の値をデクリメントしますが、前置は値を参照する前、後置は値を参照した後にデクリメントを実行します。

処理早見表

前置加算子・後置加算子・前置減算子・後置減算子の処理早見表を用意しましたので、ご活用ください。

演算子 基本構文 加減算 値参照
前置加算子 ++変数
後置演算子 変数++
前置減算子 --変数
後置演算子 変数--

演習問題

問題1

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

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

問題2

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

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