<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="0.92">
<channel>
	<title>MT312 &#187; 変数の参照 (call by reference)</title>
	<link>http://www.mt312.com</link>
	<description></description>
	<lastBuildDate>Mon, 12 May 2008 02:56:06 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>変数の参照 (call by reference)</title>
		<description>変数の代入
PHPでは通常、変数の代入はコピー（クローン）が渡されます。
（PHP5ではインスタンスは参照渡し）
[php]
$var1 = 1;
$var2 = $var1;
$var1 += 10;
$var2 += 20;

// VAR1:11 VAR2:21
print "VAR1:$var1 VAR2:$var2";
[/php]
$var1、$var2、それぞれ独立しています。
参照の代入
参照を代入するには、参照演算子=&#38;を使います。
[php]
$var1 = 1;
$var2 =& $var1;
$var1 += 10;
$var2 += 20;

// VAR1:31 VAR2:31
print "VAR1:$var1 VAR2:$var2";
[/php]
さっきとは違い、出力文で$var1と$var2が同じである事が分かります。これは、2行目で変数$var1の参照を代入している為です。参照とは変数が持っているアドレス（実際のデータへの住所）の事です。2行目の代入により、$var2が$var1を参照しているのではなく、2つは同じデータを参照しているのです。
[php]
$var1 = 1;
$var2 =& $var1;
$var1 += 10;
$var2 += 20;

// 参照元の変数削除
unset($var1);
// 31
print $var2;
[/php]
$var1を削除したのに、$var2は残っています。var2はvar1と同じ場所にデータを持つ、別名（エイリアス）の変数と捕らえる事ができます。参照の削除とは、変数名と実際のデータの関係性を破棄することにすぎません。つまり、以下は参照渡しになりません。
[php]
$var = 100;
$ref =& $var;

// エラー
$ref =& 200;

function test() {
  return 200;
}
// 無効な参照渡し
$ref =& ...</description>
		<link>http://www.mt312.com/php/34/</link>
			</item>
</channel>
</rss>
