PHP'de referans atama operatörü, = &


Yanıtlar:


121

Kullanımdan kaldırılmadı ve olması muhtemel değil. Örneğin, var olan verileri kopyalamak yerine, bir dizinin parçasını veya başka bir nesne aynasında yapılan değişiklikleri yapmanın standart yoludur.

Buna referansla atama denir , ki bu kılavuzdan alıntı yaparsak "her iki değişkenin de aynı veriyi gösterdiği ve hiçbir şeyin hiçbir yere kopyalanmadığı anlamına gelir" .

Tek şey olduğu ile kaldırılan =&"sonucunu atayan newiçinde referans olarak" PHP 5 herhangi bir karışıklık kaynağı olabilir. newreferans tarafından otomatik olarak atanır, bu nedenle &içinde fazladır / kullanımdan kaldırılır $o = &new C;, ancak içinde değildir $o = &$c;.


Arama yapmak zor olduğundan, =&( eşittir ve işareti ) ile = &( boşluk ve işareti eşittir ) aynıdır ve genellikle $x = &$y['z'];veya $x = &$someVar(ve işareti dolar işareti değişken adı ) gibi diğer değişkenle karşılaşacak şekilde yazılır . Dokümanlardan basitleştirilmiş örnek:

$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4

İşte PHP kılavuzundaki Referansla Ata ile ilgili ayrıntılı bir bölüme kullanışlı bir bağlantı . Bu sayfa, referanslarla ilgili bir dizinin parçasıdır - dizinin tamamını okumak için bir dakikanızı ayırmaya değer.


8
yan not re: "araması zor olduğundan" : symbolhound.com , bu tür şeyler için arkadaşınızdır.
billynoah

1
@billynoah Wow! Symbolhound artık kalıcı olarak araç kutuma eklendi.
Parapluie

26

İki farklı operatör. =muhtemelen bildiğiniz gibi bir görevdir. Ve &değişkene değer yerine referansla erişilmesi gerektiği anlamına gelir.


60
Üzgünüm ama bu çok basit. $ a = & $ b, $ a değişkeninin $ b'nin şu anda yaptığı aynı şeyi göstermesini sağlamak anlamına gelir. Bundan sonra, $ a = 5; ayrıca $ b'nin 5'e sahip olmasına neden olur. Ancak referans bağlantısı $ b = & $ xyz; veya belirlenmemiş ($ b); Hangi zamanda $ a, hücrenin nerede 5'i tutan tek değişken olacaktır. Ayrıca, $ a'yı = & kullanarak ayarlarsanız, değiştirmek için bir dahaki sefere = & (veya ayarı kaldır ($ a)) kullanmanız gerektiğine dikkat edin. $ a'nın referans bağlantısı, özellikle $ a = NULL; bağı bozmaz, sadece 5'i null ile değiştirir;
Don

8
@ Don: Ayrıntılandırma için teşekkürler. C programcısı olduğunu söyleyebilirim.
Asaph

8
Don'un söylediklerini beğeniyorum. Ama bunun çok basit olduğunu söylemem. Bunun yanlış olduğunu söyleyebilirim.
Artefacto

@ Yorumunuzu bir cevap olarak göndermelisiniz.
Adam

7
$x = &$y['z'];

ayrıca, $y['z']yoksa yaratma ve onu ayarlama etkisine de sahiptir null.

Bu, okumak isteyebileceğiniz hata mesajlarını önler. Bununla ilgili henüz belge bulamadım; Muhtemelen 5.3'te yeni, bildiğim her şey için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.