Olası Çoğalt:
Reference assignment operator in php =&
$var2 = $var1;
$var2 = &$var1;
Örnek:
$GLOBALS['a']=1;
function test()
{
global $a;
$local=2;
$a=&$local;
}
test();
echo $a;
Neden $ hareketsiz 1'dir?
Olası Çoğalt:
Reference assignment operator in php =&
$var2 = $var1;
$var2 = &$var1;
Örnek:
$GLOBALS['a']=1;
function test()
{
global $a;
$local=2;
$a=&$local;
}
test();
echo $a;
Neden $ hareketsiz 1'dir?
Operatör = &, referanslarla değil, değerlerle çalışır. $var2=$var1
ve $var2=&$var1
arasındaki fark bu durumda görülebilir: Eğer = kullandığınızda
$var1 = 1;
$var2 = $var1;
$var1 = 2;
echo $var1 . " " . $var2; // Prints '2 1'
$var1 = 1;
$var2 =& $var1;
$var1 = 2;
echo $var1 . " " . $var2; // Prints '2 2'
& operatörü $ var2 için söylemiyorum "yerine şöyle bir cümle "Şimdi $ var1 değerini almak" Değeriniz, $ var1 değerinin tam olarak aynı yerde depolanacaktır ". Yani, var1 veya $ var2'nin içeriğini değiştirdiğinizde, iki değişkendeki değişikliği göreceksiniz. Daha detaylı bilgi için
DÜZENLEME bakmak: Küresel bölümü için , sen $GLOBALS["a"] =& $local;
Cf kullanmanız gerekir dokümantasyon.
$var2 = $var1
'u yaptığınızda, PHP, $var1
'un bir kopyasını oluşturur ve $var2
içine yerleştirir. Ancak, $var2 = &$var1
yaparsanız, hiçbir kopya yapılmaz. Bunun yerine, $var1
adresindeki $var2
noktasını döndürür - bunun anlamı, tam aynı şeyi işaret eden iki değişkenle sonuçlanır.
Bir örnek: Bu eşdeğerdir
$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"!
wow, değişkeni klonlama. düzgün. bunu bilmiyordum. – DMin
Teşekkür ederim, stephen. – lovespring
"PHP $ var1 noktasını $ var1 yapar - bu, aynı şeyi gösteren iki değişkenle sonuçlandığınız anlamına gelir." kendinle çelişiyorsun; ve sadece ikinci kısım doğrudur. – Artefacto
global $a;
: yeni referans $a
atadığınızda
$a = &$GLOBALS['a'];
, sen $a
değil $GLOBALS['a']
değiştiriyoruz.
Aşağıda çıktı olarak ne bekliyorsunuz?
$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;
Teşekkür ederim, strager – lovespring
Örneğimi kontrol edin, thx. – lovespring
"Bir işlev içinde genel olarak bildirilen bir değişkene bir başvuru atarsanız, başvuru yalnızca işlevin içinde görünür olacaktır. Bunu, $ GLOBALS dizisini kullanarak önleyebilirsiniz." Sana verdiğim bağlantıyı kontrol et, globals hakkında bir bölüm var. –