重複の可能性:
アンパサンドで PHP 関数を開始するとはどういう意味ですか?
PHP 言語 (バージョン < 5.3) のアンパサンドについて、知っていると思うことと理解できないことを共有したいと思います。
私は基本的な使い方を知っていると思います。
$var = 'foo';
echo $var; //output foo
$var2 = &$var;
$var2 = 'bar';
echo $var2; //output bar
ここまでは順調ですね。オブジェクトで試してみましょう:
class Person {public $name='john';}
$person = new Person();
echo $person->name;//outputs john
$person2 = &$person;
$person2->name = 'doe';
echo $person->name;//obviously outputs doe
上記のコードでは、アンパサンドなしで同じ結果が得られることに注意してください。両方$personを指定$person2 (= $person)すると、同じオブジェクト (Java の場合と同様) が参照されるため、オブジェクトの変更は両方の変数によって取得されます。
これまでのところ、アンパサンド演算子はプリミティブに対してのみ有用であると言えます。ただ、どうしてもわからないことがあります。
ただし、この使用法は理解しています:
function superplusplus(&$base) {$base++;}
$var = 2;
superplusplus($var);
echo $var;//outputs 3
私が得られないのは、これが以下のようなアンパサンドの使用法であるということです:
function &superplusplus($var) {$var++;}
アンパサンドがまったくないかのように、何の効果もないようです。
この構文は何をすることになっていますか?