संभव डुप्लिकेट:
Reference assignment operator in php =&
$var2 = $var1;
$var2 = &$var1;
उदाहरण:
$GLOBALS['a']=1;
function test()
{
global $a;
$local=2;
$a=&$local;
}
test();
echo $a;
क्यों $ एक अभी भी 1 है?
संभव डुप्लिकेट:
Reference assignment operator in php =&
$var2 = $var1;
$var2 = &$var1;
उदाहरण:
$GLOBALS['a']=1;
function test()
{
global $a;
$local=2;
$a=&$local;
}
test();
echo $a;
क्यों $ एक अभी भी 1 है?
ऑपरेटर = & संदर्भों के साथ काम करता है और मूल्य नहीं। $var2=$var1
और $var2=&$var1
के बीच का अंतर इस मामले में दिखाई दे रहा है:
$var1 = 1;
$var2 = $var1;
$var1 = 2;
echo $var1 . " " . $var2; // Prints '2 1'
$var1 = 1;
$var2 =& $var1;
$var1 = 2;
echo $var1 . " " . $var2; // Prints '2 2'
आप = का उपयोग करते हैं & ऑपरेटर आप $ var2 को नहीं कहता "$ var1 का मान ले अब" के बजाय आप की तरह कुछ कहते हैं कि " आपका मान उसी स्थान पर संग्रहीत किया जाएगा जो $ var1 का मान "। तो जब भी आप $ var1 या $ var2 की सामग्री बदलते हैं, तो आप दो चरों में संशोधन देखेंगे।
अधिक जानकारियां लिए पर PHP.net
संपादित देखो: वैश्विक भाग के लिए , आप $GLOBALS["a"] =& $local;
सी एफ का उपयोग करना होगा प्रलेखन।
जब आप $var2 = $var1
करते हैं, तो PHP $var1
की एक प्रति बनाता है, और इसे $var2
में रखता है। हालांकि, अगर आप $var2 = &$var1
करते हैं, तो कोई प्रतिलिपि नहीं बनाई जाती है। इसके बजाय, PHP $var2
$var1
पर इंगित करता है - इसका अर्थ यह है कि आप सटीक पर एक ही चीज़ के साथ समाप्त होते हैं।
एक उदाहरण:
$var1 = "Foo";
$var2 = $var1; // NORMAL assignment - $var1's value is copied into $var2
$var3 = &$var1; // NOT normal copy!
echo $var2; // Prints "Foo".
echo $var3; // Also prints "Foo".
$var1 = "Bar"; // Change $var1.
echo $var2; // Prints "Foo" as before.
echo $var3; // Now prints "Bar"!
वाह, चर क्लोनिंग। साफ। उसे नहीं पता था। – DMin
धन्यवाद, स्टीफन। – lovespring
"PHP $ var1 बिंदु $ var1 पर बनाता है - इसका क्या अर्थ है कि आप दो चर के साथ समाप्त होते हैं जो सटीक चीज़ पर इंगित करते हैं।" आप खुद के विरोधाभास कर रहे हैं; और केवल दूसरा भाग सच है। – Artefacto
global $a;
इस के बराबर है: जब आप $a
एक नया संदर्भ आवंटित
$a = &$GLOBALS['a'];
, आप $a
और नहीं $GLOBALS['a']
बदल रहे हैं।
आप नीचे आउटपुट होने की क्या अपेक्षा करते हैं?
$GLOBALS['a']=1;
function test()
{
$a='foobar'; // $a is a normal variable
$a=&$GLOBALS['a']; // same as: global $a;
$local=2;
$a=&$local;
}
test();
echo $a;
धन्यवाद, धन्यवाद – lovespring
मेरा उदाहरण, thx जांचें। – lovespring
"यदि आप किसी फ़ंक्शन के अंदर वैश्विक रूप से घोषित वैरिएबल का संदर्भ निर्दिष्ट करते हैं, तो संदर्भ केवल फ़ंक्शन के अंदर दिखाई देगा। आप $ GLOBALS सरणी का उपयोग कर इससे बच सकते हैं।" मैंने जो लिंक दिया है उसे जांचें, ग्लोबल्स के बारे में एक संपूर्ण खंड है। –