2020年7月31日より「押さえておきたいWeb知識」をリニューアルしました。

[PHP入門]代入演算子を分かりやすく解説!

数値の足し算、引き算、掛け算、割り算を行う、数値を変数に代入する、文字列を連結するなどデータに対して、何か処理を行うことを演算と呼びます。

また、スクリプトの中でデータに対して行う演算の種類を決める記号のことを演算子と呼びます。

ここでは演算子とは何か、代入演算子とは何か、参照渡しと値渡しを見ていきます。

このページで解説することは以下の通りです。

1.演算子とは

代入演算子について解説していく前に演算子とは何かを解説していきます。

演算子とは変数やリテラルに対して行う演算の種類を決める記号のことです。

演算子の例として、数値を足し算するための「+」演算子、数値を引き算するための「-」演算子、数値を掛け算するための「×」演算子、数値を割り算するための「÷」演算子などが挙げられます。

演算子というと上記のような数値の足し算、引き算、掛け算、割り算を思い浮かべる方が多いかと思いますが、PHPは上記以外にも演算子が存在しています。

例えば、変数の比較、文字列の結合、コンピューター独自のビット処理など様々な演算子が用意されています。

また、演算子によって処理される変数やデータのことを被演算子と呼びます。

例えば「6-4」という足し算があった場合、「-」が演算子、「6」と「4」が被演算子となります。

 



 

2.代入演算子

代入演算子とは左辺の変数に対して、右辺の値を代入するための演算子のことです。

PHPを使用する時に頻繁に出てくる「=」演算子は代表的な演算子の一つとなります。

また、代入演算子には「+」や「=」などを組み合わせた「+=」などの複合代入演算子も存在しています。

主な代入演算子は以下の通りです。

演算子 内容
= 代入
+= 加算代入
-= 減算代入
*= 乗算代入
**= 累乗代入
/= 除算代入
%= 乗算代入
.= 連結代入
&= ビットAND代入
|= ビットOR代入
^= ビットXOR代入
<<= 左シフト代入
>>= 右シフト代入

複合代入演算子は少し分かりずらいので、解説していきます。

複合代入演算子は左辺と右辺の演算結果を左辺に代入するための演算子です。

例えば、以下のコードは同じ意味となります。

$a+=1; ⇔ $a=$a+1;

$a-=1; ⇔ $a=$a-1;

$a*=1; ⇔ $a=$a*1;

$a/1; ⇔ $a=$a/1

このように複合代入演算子を利用することで簡潔にコードを記述することができます。

それでは具体的なサンプルプログラムを見ていきましょう。

・加算代入(+=)

<?php

$a = 7;

$b = 2;

$a += $b;

echo $a; //結果:9

?>

上記の「$a += $b」は「$a = $a + $b」と同じ意味を持っています。

その結果、$aは9となります。

・減算代入(-=)

<?php

$a = 7;

$b = 2;

$a -= $b;

echo $a; //結果:5

?>

上記の「$a -= $b」は「$a = $a – $b」と同じ意味を持っています。

その結果、$aは5となります。

・乗算代入(*=)

<?php

$a = 7;

$b = 2;

$a *= $b;

echo $a; //結果:14

?>

上記の「$a *= $b」は「$a = $a * $b」と同じ意味を持っています。

その結果、$aは14となります。

・除算代入(/=)

<?php

$a = 10;

$b = 2;

$a /= $b;

echo $a; //結果:5

?>

上記の「$a /= $b」は「$a = $a / $b」と同じ意味を持っています。

その結果、$aは14となります。

 




 

3.参照渡しと値渡し

変数に変数を代入するする場合、値による代入が基本となります。

値による代入とは「値渡し」と呼ばれ、メモリ上の値を別のアドレスにコピーすることです。

例えば、「値渡し」がどのようなものか見てみましょう。

<?php

$a = 1;

$b = $a;

$a = 5;

print $b; //結果:1

?>

上記の場合、$aの値である1を$bにコピーして代入しています。

「値渡し」は代入した変数と代入された変数は別物と判断しているので、代入された変数は影響を受けることありません。

そのため、$bは1と表示されます。

一方、参照による代入とは「参照渡し」と呼ばれ、メモリ上のアドレスそのものを引き渡す代入のことです。

例えば、「参照渡し」がどのようなものか見てみましょう。

<?php

$a = 1;

$b =& $a;

$a = 5;

print $b; //結果:5

?>

「参照渡し」は「値渡し」とは異なり、アドレスそのものを引き渡しているので、元の変数の値が変化すると、代入された変数にも影響を及ぼします。

そのため、$bは5と表示されています。

「参照渡し」を行うには「=」演算子の後に参照を表す「&」演算子を指定します。

 



 

4.ポイント

・演算子とは変数やリテラルに対して行う演算の種類を決める記号のことです

・代入演算子とは左辺の変数に対して、右辺の値を代入するための演算子のことです

・値渡しとはメモリ上の値を別のアドレスにコピーすることです

・参照渡しとはメモリ上のアドレスそのものを引き渡す代入のことです

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です