関数を定義するときに関数の前にアンパサンドを追加することは何を意味しますか?
もしそうなら、例を挙げてください。ありがとうございます。
ベストアンサー[url=http://www.111cn.cn/bbs/space.php?username=qxhy123]リンクタグqxhy123[/url]
[url=http://www.111cn.cn/bbs/space.php?uid=66514]リンクタグ[img]http://www.111cn.cn/server/avatar.php?uid=66514&size=small[ /img][/url] 以下に正解を公開します。これはフォーラムの E Snail Children's Shoes の投稿で見たものです。関数の前に & を追加する機能とその具体的な効果が正確に説明されています。 .
関数参照が返されます
まずコードを見て、PHP コンテンツをクリップボードにコピーします
PHPコード:
関数&test()
{
static $b=0;//静的変数を宣言します
$b=$b+1;
エコー $b;
$b を返します;
}
$a=test();//このステートメントは、$b の値が 1 であることを出力します
$a=5;
$a=test();//このステートメントは、$b の値が 2 であることを出力します
$a=&test();//このステートメントは、$b の値が 3 であることを出力します
$a=5;
$a=test();//このステートメントは、$b の値が 6 であることを出力します
以下で説明します:
このように、$a=test(); は実際には関数からの参照を取得しません。理由としては、これは PHP
の規定です。
PHP では、$a=&test(); を通じて取得されるものは関数の参照戻りであると規定されています
参照リターンとは何かというと (PHP マニュアルには、参照をバインドする必要がある変数を見つけるために関数を使用したい場合に参照リターンが使用されます。) このデタラメなことで、私は長い間理解できませんでした
上記の例で説明すると
$a=test() を使用して関数を呼び出すと、関数の値が $a に代入されるだけであり、$a を変更しても関数内の $b
には影響しません。
$a=&test() を通じて関数を呼び出すと、その関数は $b を返す $b 変数のメモリ アドレスと、$a 変数のメモリ アドレスが同じ場所を指すようになります
つまり、これと同等の効果が生じる($a=&b;)ので、$aの値を変更すると$bの値も変更されるので、
を実行した後、
$a=&test();
$a=5;
これから$bの価値は5になります