PHP में संदर्भ असाइनमेंट ऑपरेटर, = &


101

=&PHP में असाइनमेंट ऑपरेटर (बराबर-एम्पर्सैंड) क्या करता है ?

क्या यह पदावनत है?


यह भी देखें stackoverflow.com/questions/3200009 (इसे डुप्लिकेट के रूप में चिह्नित)
Artefacto

जवाबों:


121

यह पदावनत नहीं है और होने की संभावना नहीं है। यह मौजूदा तरीका है, उदाहरण के लिए, मौजूदा डेटा की प्रतिलिपि बनाने के बजाय, एक सरणी या ऑब्जेक्ट मिरर परिवर्तन को दूसरे को बनाया गया है।

इसे संदर्भ द्वारा असाइनमेंट कहा जाता है , जो मैनुअल को उद्धृत करने के लिए, "इसका मतलब है कि दोनों चर एक ही डेटा पर इंगित करते हैं, और कहीं भी कुछ भी कॉपी नहीं किया जाता है"

केवल बात यह है कि है के साथ पदावनत =&किया गया है "का नतीजा बताए newमें संदर्भ द्वारा" PHP 5 , जो किसी भी भ्रम का स्रोत हो सकता है। newस्वचालित रूप से संदर्भ द्वारा असाइन किया गया है, इसलिए &निरर्थक / पदावनत है $o = &new C;, लेकिन अंदर नहीं $o = &$c;


चूंकि यह खोज करना कठिन है, ध्यान दें कि =&( एम्परसेंड के बराबर ) स्पेस एम्परसेंड के बराबर है= & ( अक्सर स्पेस एम्परसेंड के बराबर होता है ) और अक्सर ऐसा लिखा जाता है कि यह दूसरे वेरिएबल की तरह चलता है ( $x = &$y['z'];या एम्परसेंड डॉलर साइन वेरिएबल नेम )। उदाहरण डॉक्स से सरल:$x = &$someVar

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

यहाँ PHP मैनुअल में संदर्भ द्वारा संदर्भ पर एक विस्तृत अनुभाग के लिए एक आसान लिंक है । यह पृष्ठ संदर्भों की एक श्रृंखला का हिस्सा है - पूरी श्रृंखला को पढ़ने के लिए एक मिनट का समय लगता है।


8
साइड नोट री: "चूंकि इसे खोजना कठिन है" : इस तरह से सामान के लिए आपका दोस्तहै
बिलिन्हा

1
@ बिलियनो वाह! अब मेरे टूलबॉक्स में सिंबल को स्थायी रूप से जोड़ा गया है।
परपलूई

26

यह दो अलग-अलग ऑपरेटर हैं। =असाइनमेंट है जैसा कि आप शायद जानते हैं। और &इसका मतलब है कि चर को मूल्य के बजाय संदर्भ द्वारा एक्सेस किया जाना चाहिए।


60
मुझे खेद है लेकिन यह बहुत सरल है। $ a = & $ b का मतलब चर $ को उसी चीज के लिए संदर्भित करना है जो $ b अभी करता है। इसके बाद, $ a = 5; $ b में भी परिणाम होगा 5. हालांकि संदर्भ लिंक $ b = और $ xyz द्वारा तोड़ा जा सकता है; या परेशान ($ b); जिस समय $ एक ही वैरिएबल होगा जो जानता है कि सेल कहां है 5. यह भी ध्यान रखें कि यदि आपने $ = का उपयोग करके सेट किया है, तो आपको बदलने के लिए = और अगली बार (या अनसेट ($ a)) का उपयोग करना होगा। $ a, विशेष रूप से $ a = NULL का संदर्भ लिंक; लिंक को नहीं तोड़ेंगे, यह केवल 5 को शून्य से बदल देता है;
डॉन

8
@ डोन: विस्तार के लिए धन्यवाद। मैं बता सकता हूं कि आप एक सी प्रोग्रामर हैं।
असफ

8
मैं दूसरा कहता हूं कि डॉन क्या कहता है। लेकिन मैं यह नहीं कहूंगा कि यह बहुत सरल है। मैं कहूंगा कि यह गलत है।
अर्टफेक्टो

@ क्या आपको वास्तव में एक उत्तर के रूप में अपनी टिप्पणी पोस्ट करनी चाहिए।
एडम

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

$y['z']यदि यह मौजूद नहीं है, तो इसे बनाने और इसे सेट करने का भी प्रभाव पड़ता है null

यह त्रुटि संदेशों को रोकता है जिन्हें आप पढ़ना चाहते थे। मुझे अभी तक इस पर प्रलेखन नहीं मिला है; संभवतः 5.3 में नया, सभी के लिए मुझे पता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.