• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「オブジェクト参照渡し」と「参照渡し」の違いを)

オブジェクト参照渡しと参照渡しの違いを確認する簡単なサンプルコード

このQ&Aのポイント
  • オブジェクト参照渡しと参照渡しの違いを確認するために、簡単なサンプルコードを作成します。
  • まず、オブジェクト参照渡しの場合、$aと$bが同じIDを持つコピーとなります。
  • 一方、参照渡しの場合、$cと$dは参照となります。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

「参照」というのは、メモリ上の地番のことで、phpでは「シンボルテーブルのエイリアス」と記述されています。 http://jp.php.net/manual/ja/language.references.whatare.html 「シンボルテーブル」ってのは、云ってみれば本の目次のようなもの。 「エイリアス」はデータ格納場所(本の各ページ)の名前 <?php $a = new A(); /* ここで、new という操作によって、オブジェクトが作成されて、オブジェクト格納場所を示す#id という名前(これがオブジェクト参照)が $a の内容として格納されます。  */ $b=$a ; var_dump($a,$b); /* これは、変数内容をコピーします。 // $bの格納場所は、$a と違うところにあるけど、中身のオブジェクトを指すための #id は同じ  */ $c= &$a; var_dump($a,$b,$c); /* リファレンス記号& により、$aの格納場所(参照)を $c の格納場所として、目次に書き込みます。 // よって $c は、$aと同じ格納場所の中身を見て動作します。  */ $a = 12; var_dump($a,$b,$c); /* $aは 12、$bは元のオブジェクトidのまま、$cは$aと同じ格納場所をみてるので 12 になる  */

re97
質問者

お礼

回答ありがとうございましたー

関連するQ&A