PHP 変数の前のアンパサンド記号が何を意味するかは言うまでもありません。これは、2 つの変数が同時に同じアドレスを指すことを意味します。 php関数?以下に 2 つのデモ コードを最初に示し、次に説明を示します。
2つ目の機能を説明しましょう。
このように、 $a=test(); は実際には関数参照の戻り値を取得しません。これは通常の関数呼び出しと何ら変わりません。
PHP では、$a=&test(); を通じて取得されるものは関数の参照戻りであると規定されています。
参照リターンとは何かについては(PHPマニュアルには、参照をバインドする必要がある変数を見つけるために関数を使用したい場合に参照リターンが使用されます。)
上記の例を使用して説明します
$a=test() を使用して関数を呼び出すと、関数の値が $a に代入されるだけであり、$a への変更は関数内の $b には影響しません。
$a=&test() を通じて関数を呼び出すと、その関数は、戻り値 $b の変数 $b のメモリ アドレスを $a 変数のメモリ アドレスと比較することです
同じ場所を指します。つまり、効果はこれと同等です ($a=&b;)。したがって、$a の値を変更すると、$b の値も変更されるため、次のように実行します。
$a=&test(); $a=5; その後、$b の値は 5 になります。
PHPで関数定義の前にアンパサンドを追加する意味は何ですか?
ちなみに、php リファレンスにはもう 1 つ一般的に使用される形式があります。それは、関数 gao(&$id) と関数 gao($id) です。この形式のリファレンスでは、結果を比較するだけで済みます。
関数 a(&$t){
$t .= 'xx';
}
関数 b($t){
$t .= 'yy';
}
$x = 'aa';
b ($x);
echo $x; // 出力 aa
a($x);
echo $x; // 出力 aaxx
ここでの出力は b($x) や a($ ではない) であることに注意してくださいx) .(cosmicdusts から例を借りてごめんなさい)
----他の人から学びましょう
http://www.bkjia.com/PHPjc/840757.html
www.bkjia.com
true