ホームページ  >  記事  >  バックエンド開発  >  グローバル&その仕組みをまったく理解していない

グローバル&その仕組みをまったく理解していない

WBOY
WBOYオリジナル
2016-06-13 12:52:58856ブラウズ

グローバルですが、まだ仕組みがわかりません

<br />
$var1 = 1;<br />
$var2 = 2;<br />
function test(){<br />
global $var1,$var2; // <br />
$var1 = 3;//$var1 重新赋值  又没有return<br />
}<br />
test();<br />
echo $var1;  //为什么是3<br />

<br />
$var1 = 1;<br />
$var2 = 2;<br />
function test(){<br />
global $var1,$var2;<br />
$var1 = &var2;<br />
}<br />
test();<br />
echo $var1 //1   想不通<br />

<br />
$var1 = 1;    <br />
$var2 = 2;    <br />
function test_global()    <br />
{    <br />
    global $var1,$var2;    <br />
    $var1=&$var2;    <br />
    $var1=7;    <br />
}<br />
test_global();    <br />
echo $var1;    <br />
echo $var2;//结果是1和7<br />


-----解決策--------------------------------
元の投稿者の 3 つの関数はすべてパラメータが渡されません。
それがグローバルの役割です。
パラメーターを渡さず、この変数を使用する必要がある場合。グローバル
------ソリューション--------------------------------
ありがとうございます。 「&」の関数を説明してください。 $var1 = &var2 を理解するにはどうすればよいですか?
------解決策---------
$var1 = 1;
$var2 = 2;
関数テスト(){
グローバル $var1,$var2;
$var1 = &var2;
}
テスト();
echo $var1 //1 分かりません
まずこれについて説明します: test() 関数内の $var1 = &var2; この $var1 は関数内のローカル変数にすぎません。 test() で $var1 を出力すると、結果は $var1 = 2;
------解決策------ -- -
$var1 = 1; $var2 = 2; 関数 test_global()
{
グローバル $var1,$var2
$var1=&$var2;
$var1=7;
}
テストグローバル();
エコー $var1; echo $var2;//結果は 1 と 7

同様に、$var1 もローカル変数であることに注目します。しかし、test() のコード $var1=&$var2; は、$var1 の値を $var2 のポインタに対応するメモリ アドレス (AA と表記) に指すことを意味します。このとき $var1=7 は、AA が 7 に変更されることを意味します。
PHP のリファレンスです。理解のお役に立てれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。