答えて
参照渡しです。関数内の変数は、呼び出しコンテキストからの変数と同じデータを指す。
function foo(&$bar)
{
$bar = 1;
}
$x = 0;
foo($x);
echo $x; // 1
パラメータとして変数への参照を受け入れます。
これは、関数がパラメータに対して行う変更(たとえば、)が、呼び出し元関数によって渡された変数に影響することを意味します。
基本的には、機能内で$var
を変更すると、外側に変更されます。たとえば:
$var = 2;
function f1(&$param) {
$param = 5;
}
echo $var; //outputs 2
f1($var);
echo $var; //outputs 5
ありがとう、非常にはっきりと書かれています。 –
変数(& $ fooという)の前にアンパサンド(&)があなたの代わりに参照することにより、変数を渡したいことを指定する値でパスを上書きします。例えば
あなたはこれを持っている場合:
function doStuff($variable) {
$variable++;
}
$foo = 1;
doStuff($foo);
echo $foo;
// output is '1' because you passed the value, but it doesn't alter the original variable
doStuff(&$foo); // this is deprecated and will throw notices in PHP 5.3+
echo $foo;
// output is '2' because you passed the reference and php will alter the original variable.
それは両方の方法を動作します。
function doStuff(&$variable) {
$variable++;
}
$foo = 1;
doStuff($foo);
echo $foo;
// output is '2' because the declaration of the function requires a reference.
+1。これがCでポインタが意味するものであれば上記を読んだときに不思議でした。あなたの確認で今は完璧な意味があります。 – Kaji
あなたは更新されるの$ VARの実際の値を意味し、リファレンスとしての$ VARを渡している例が
:
function boo(&$var) {
$var = 10;
}
$var = 20;
echo $var; //gets 20
boo($var);
echo $var //gets 10
任意の関数は、アンパサンドで始まる場合(&) 、それはReference関数による呼び出しを意味します。値の代わりに変数への参照を返します。
私は `foo`、私の例では、` bar`を使用して起動するんだfunction reference_function(&$total){
$extra = $total + 10;
}
$total = 200;
reference_function($total) ;
echo $total; //OutPut 210
- 1. Scalaの関数にUnitを渡す目的は何ですか
- 2. setsockoptのoption_len引数の目的は何ですか?
- 3. mysqlの-u引数の目的は何ですか?
- 4. 関数の引数の前にあるclassキーワードは何ですか?
- 5. 目的関数cでasin()関数を使用する方法
- 6. この方法で無名関数に引数を渡す目的は何ですか?
- 7. 関数の引数とテンプレートの引数としてstd :: enable_ifを使用する違いは何ですか?
- 8. signal()関数が返す関数ポインタの目的は何ですか?
- 9. 関数の引数にあるPHPのフラグは何ですか?
- 10. knockout.jsライブラリのexportProperty関数の目的は何ですか?
- 11. Observable.never()関数の実際の目的は何ですか?
- 12. Djangoの "deconstruct"モデルフィールド関数の目的は何ですか?
- 13. この関数の目的は何ですか?
- 14. Azure関数の.jsonファイルの目的は何ですか?
- 15. jQueryの無名関数ラッパーの目的は何ですか?
- 16. FSharp.Coreの `id`関数の目的は何ですか?
- 17. OOPでの静的関数の使用は何ですか?
- 18. angular2のメソッド名の前にgetを使用する目的は何ですか?
- 19. 関数tryブロックの目的は何ですか?
- 20. CartPoleタスクの目的関数は何ですか?
- 21. tf.contrib.framework関数の目的は何ですか?
- 22. Ref-qualifiedメンバ関数の目的は何ですか?
- 23. フラックスコンテナ関数 'createFunctional'の目的は何ですか?
- 24. laravelsヘルパー関数str_finishの目的は何ですか?
- 25. fseek(..)関数の目的は何ですか?
- 26. 変数の前に2つの感嘆符の目的は何ですか?
- 27. Xgboost - "mae"を目的関数として使用するには?
- 28. iOSアプリケーションで目的のcランタイム関数を使用する
- 29. この関数の戻り値でイテレータを使用する目的は何ですか?
- 30. ステップ関数を使用した目的関数の最適化
.. – cambraca
ので、それは一種の真の、 'グローバルの$ var' – Alex
@Alexを使用したときと同様に動作しますが、大きな二つがあります違い:1)非グローバルスコープ(他の関数を呼び出す関数)で動作し、2)変数の名前を知っている内部関数に依存しない。関数の引数としての参照は、デバッグが容易で、グローバル変数よりもエラーが起こりにくいものの、同じ懸念事項(変数の予期しない変更など)の一部が依然として適用されます。 – Matthew