ITHACK
~ みんなのIT部門 ~
【PHP】代入演算子と複合演算子 – 文字列結合演算や算術演算と代入演算の省略記法

【PHP】代入演算子と複合演算子 – 文字列結合演算や算術演算と代入演算の省略記法

変数に値を記憶する代入演算子は、他の演算子と組み合わせた演算にできる複合演算子があります。

複合演算子を使うことで、ソースコードを簡潔に記述することができます。

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

検証環境

代入演算子

代入演算子(=)は変数に値を代入(記憶)します

基本構文

変数 = 値

サンプル

<?php

$num = 10;

echo $num."\n";

?>
$ php sample.php
10

このサンプルは$num変数に10を代入しています。

複合演算子

複合演算子は“代入演算子とその他の演算を組み合わせた演算子”です。

主にソースコードを省略して記述するために使用します。

例えば、次は省略する前のソースコードです。

<?php

$num = 10;

___ih_hl_start
$num = $num + 1;
___ih_hl_end

echo $num."\n";

?>
$ php sample.php
11

5行目は$numの値に1を加算して、その値を$numに代入するコードです。

※ 再代入では左オペランドの変数を右オペランドで使用することができます。

このコードを複合演算子で書き換えると次のようになります。

<?php

$num = 10;

___ih_diff_start
-$num = $num + 1;
+$num += 1;
___ih_diff_end

echo $num."\n";

?>
$ php sample.php
11

複合演算子は5行目の+=です。

この演算子は左オペランドの変数の値に右オペランドの値を加算し、その結果を左オペランドの変数に代入します。

このように複合演算子はコード量を削減して簡潔に記述でき、その結果、不具合等の意図しない動作を防ぐことに繋がります。

複合演算子の種類

代表的な複合演算子は次の通りです。

演算子 処理内容
.= 左オペランドの変数の値に右オペランドの値を文字列結合した結果を左オペランドの変数に代入します。 $num .= 'Hello'
+= 左オペランドの変数の値に右オペランドの値を加算した結果を左オペランドの変数に代入します。 $num += 8
-= 左オペランドの変数の値から右オペランドの値を減算した結果を左オペランドの変数に代入します。 $num -= 8
*= 左オペランドの変数の値に右オペランドの値を乗算した結果を左オペランドの変数に代入します。 $num *= 8
/= 左オペランドの変数の値を右オペランドの値で除算した結果を左オペランドの変数に代入します。 $num /= 8

サンプル

<?php

// 代入 + 文字列結合
$message = 'Hello';
___ih_hl_start
$message .= ' World!';
___ih_hl_end
echo $message."\n";

// 代入 + 加算
$num1 = 10;
___ih_hl_start
$num1 += 2;
___ih_hl_end
echo $num1."\n";

// 代入 + 減算
$num2 = 10;
___ih_hl_start
$num2 -= 2;
___ih_hl_end
echo $num2."\n";

// 代入 + 乗算
$num3 = 10;
___ih_hl_start
$num3 *= 2;
___ih_hl_end
echo $num3."\n";

// 代入 + 除算
$num4 = 10;
___ih_hl_start
$num4 /= 2;
___ih_hl_end
echo $num4."\n";

?>
$ php sample.php
Hello World!
12
8
20
5

実行結果から各複合演算子が正常に処理されたことが分かります。

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