PHP のグローバル変数がローカル変数のアドレスを参照している場合
<br /> $b = "dasdf";<br /> function abc(){<br /> $a = "abc";<br /> global $b;<br /> $b = &$a;<br /> echo $b."inner;";<br /> }<br /> abc();<br /> echo $b.";";<br />
関数内で b を出力するときは abc ですが、関数を抜けた後は b が出力されて戻ります。 dasdf Value の初期値、何が起こっているのでしょうか?ローカル変数のアドレスが参照されるため、ローカル変数が破棄された後は b の値が空になるのは当然です。
------ソリューションのアイデア----------------------マニュアル内:
http : //www.php.net/manual/zh/ language.references.whatdo.php#example-251
関数内でグローバルとして宣言された変数に参照が割り当てられている場合、参照は Visible のみになります。関数の内部。これは、$GLOBALS 配列を使用することで回避できます。 その理由は次のとおりです:
global $var; を $var =& $GLOBALS['var']; の省略形として扱います。したがって、他の参照を $var に代入しても、ローカル変数の参照が変更されるだけです。 -----ソリューションのアイデア----------------------
この投稿最終的に xuzuning によって 2012-08-28 09:21:48 に編集されました $b = "dasdf";
function abc(){
$a = "abc";
global $b; //これは $GLOBALS['b']
への参照です $b = &$a;
$GLOBALS['bb'] = & $a;
echo $b."inner;" ;
}
abc(); //abcinner;
echo $b.";"; //dasdf;
echo $bb; ------解決策-----------
PHP の 2 つの概念を思い出してください。すべての変数はポインターであり、すべての変数はポインターです。スコープが異なると変数も異なります。つまり、