目的
- PHPの参照による変数への代入が自分の中で理解に苦しんだので今一度わかりやすい方法で考えてみる(誰にでもわかる方法がいまいちわからなかったのでメモ的にまとめる)
情報
- 下記のサービスを用いてソースコードの動作を確認した
公式ドキュメントの記載
- PHPの公式ドキュメントの下記のページに参照による変数への代入の内容が記載されている。
-
下記のように記載されている。
-
PHP には、変数に値の代入を行う別の方法も存在します。それは、 参照による代入 です。 この場合、新規の変数は元の変数を参照するだけです。 (言いかえると、元の変数の"エイリアスを作る"または元の変数を"指す") 新規の変数への代入は、元の変数に影響し、その逆も同様となります。
<?php $foo = 'Bob'; // 値'Bob'を$fooに代入する。 $bar = &$foo; // $fooを$barにより参照 $bar = "My name is $bar"; // $barを変更... echo $bar; echo $foo; // $fooも変更される。 ?>
-
上記を実行すると下記のように出力される。
My name is BobMy name is Bob
-
上記の内容は自分では理解しているんだけど何故か毎回、「参照の代入ってどういうことだっけ??」ってなる。
自分なりの解釈
- 参照を用いた変数への代入は「任意のワードとかエクセルとかのファイルのショートカットアイコンをデスクトップに作る」感じと理解した。
-
先に記載したソースを使ってどういうことか説明する。
-
下記の処理は変数の定義である。これをワードとかエクセルとかのファイルを作った時と考える。
$foo = 'Bob';
-
下記の処理は参照を用いて値の代入を行っている。これをワードとかエクセルとかのファイルのショートカットをデスクトップに作成した時と考える。
$bar = &$foo;
-
下記の処理は変数の値を用いて作成した文字列を自身時格納している。これは先に作成したショートカットからワードとかエクセルとかのファイルを開いて編集を加えた状態と考える。
$bar = "My name is $bar";
-
下記の処理は変数の値を用いて作成した文字列を出力している。これは先に作成したショートカットからワードとかエクセルとかのファイルをショートカットを使って開き内部を閲覧している状態と考える。
echo $bar;
-
下記の処理は参照を用いて代入した元の変数を出力している。これは先に作成したショートカットからワードとかエクセルとかのファイルを当該ファイルが格納されているフォルダまで移動して開き内部を閲覧している状態と考える。
echo $foo;
-