【 PHP 】PHP8に入門してみた 64日目 PHPの基本 ( 演算子 2種類の代入? )

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

演算子

代入される「モノ」は大きく分けて2種類

まず覚えておきたいのは変数とは、コンピュータの一時的な記憶領域である「メモリ」のアドレスに対して付与された名前であるということです。
このアドレスは「値」と紐づき、記憶機能として仕事をしているのです。

これを踏まえたうえで・・・。

代入には「値の代入」と「参照の代入」があります。

値の代入

値の代入は、変数が指し示すアドレスの「値」に=の右オペランドの値を左オペランドの値にコピーすることを言います。

右オペランドはリテラル(1とか"a"とか)以外に変数であっても構いません。
例えば$a = $bとしても&bの値が消えてなくなるわけではなく、「値の代入」が行われます。
つまり$bの値が$aにコピーされます。

$bの値を別の値に変更しても$aには何の影響もありません。
現時点では「何を言っているの???」と思うかもしれませんがこのことは結構重要です。

参照の代入

参照の代入は、=の右オペランドの「アドレス」を左オペランドの「アドレス」にコピーします。
PHPでは左オペランドの直前に&を付けることで参照の代入となります。

$a = &$bといった感じです。

参照代入の特徴は、「代入元と同じアドレスの値を参照している」ということでしょう。
簡単に言うと上記例では$b = 3とした場合、$aの値は$bと同じ3になるということです。

メモ

オブジェクト型についてはデフォルトで参照の代入になります。

それ以外の場合で参照の代入をしたい場合は&を変数の直前につけて代入する必要があります。

オブジェクト型値の代入をしたい場合はcloneという関数を使います。

PHPPHP

Posted by raika@blog