【PHP】代入演算子 – 変数に値を再代入するコードを省略する

変数に値を記憶する代入演算子にはイコール(=)以外にも種類があります。
他の種類は一般的に再代入で使用され、ソースコードを簡潔に記述するために使用します。

ここでは代入演算子について解説します。

★ 内容

  • 代入演算子
  • 省略系の代入演算子

代入演算子とは

代入演算子は変数に値を代入(記憶)するために使用する演算子です。
代入演算子の左側(左オペランドと呼ぶ)の変数に右側(右オペランドと呼ぶ)の値を代入します。

例えば次のコードのように使います。

ソースコード

<?php

$num = 10;

echo $num."\n";

?>

実行結果

10

再代入について

再代入とは変数に再度値を代入することです。
次のソースコードをご覧ください。

ソースコード

<?php

$num = 10;

$num = $num + 1;

echo $num."\n";

?>

実行結果

11

5行目で$numの変数に$numに1を加算して代入するソースコードを記述しています。
再代入では左オペランドの変数を右オペランドで使うことができます。

実行時の動作は、$numの値である10に1を加算した11を$numに再代入します。
そのため、実行結果では11が表示されます。

省略形の代入演算子

代入演算子にはイコール(=)以外にも様々な種類があり、それらは再代入のソースコードを省略するために使うことがあります。

先ずは次のコードをご覧ください。

ソースコード

<?php

// 再代入(加算)
$num1 = 10;
$num1 = $num1 + 2;
echo $num1."\n";

// 再代入(減算)
$num2 = 10;
$num2 = $num2 - 2;
echo $num2."\n";

// 再代入(乗算)
$num3 = 10;
$num3 = $num3 * 2;
echo $num3."\n";

// 再代入(除算)
$num4 = 10;
$num4 = $num4 / 2;
echo $num4."\n";

?>

実行結果

12
8
20
5

上記は$numX(Xは1〜4の数字)に対して、四則演算した結果を$numXに再代入して出力するコードです。
注目していただきたい部分は四則演算で左オペランドの変数を右オペランドでも使用していることです。

ここで紹介する代入演算子はこれらの記述を省略するものです。

実際には次のようなコードになります。

ソースコード

<?php

// 再代入(加算)
$num1 = 10;
$num1 += 2;
echo $num1."\n";

// 再代入(減算)
$num2 = 10;
$num2 -= 2;
echo $num2."\n";

// 再代入(乗算)
$num3 = 10;
$num3 *= 2;
echo $num3."\n";

// 再代入(除算)
$num4 = 10;
$num4 /= 2;
echo $num4."\n";

?>

実行結果

12
8
20
5

実行結果は同じですが、5行目、10行目、15行目、20行目が先程のソースコードと変わっています。
これは省略形の代入演算子を使った方法になります。

各代入演算子と意味は下記です。

名称演算子意味
加算代入演算子+=左オペランドの変数の値に右オペランドの値を加算した結果を左オペランドの変数に代入する$num += 8
減算代入演算子-=左オペランドの変数の値から右オペランドの値を減算した結果を左オペランドの変数に代入する$num -= 8
乗算代入演算子*=左オペランドの変数の値に右オペランドの値を乗算した結果を左オペランドの変数に代入する$num *= 8
除算代入演算子/=左オペランドの変数の値を右オペランドの値で除算した結果を左オペランドの変数に代入する$num /= 8

つまり、左オペランドの変数を右オペランドでも使用する四則演算の場合は、これらの代入演算子を用いて記述することができます。

演習問題

問題1

解答例

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

  • $numに17(数値)を記憶
  • $numに3を加算して出力(加算代入演算子を使用)
  • $numから3を減算して出力(減算代入演算子を使用)
  • $numに3を乗算して出力(乗算代入演算子を使用)
  • $numを3を除算して出力(除算代入演算子を使用)

実行結果

20
17
51
17

問題2

解答例

コマンドライン引数で与えた5つの数値の合計値を計算するプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 合計値の計算は加算演算子を使う

コマンドライン

php practice.php 1 3 5 7 9

実行結果

total : 25

まとめ

代入演算子には様々な種類があります。
再代入では省略形の代入演算子を使うことでコードの可読性を上げることができます。

分かりやすいコードを書く1つのテクニックとして覚えておきましょう。