आप संदर्भ द्वारा कुछ असाइन नहीं कर सकते हैं जब तक कि आप पहले से मौजूद कुछ का संदर्भ नहीं दे रहे हैं। समान रूप से, आप ऐसी चीज की प्रतिलिपि नहीं बना सकते जो मौजूद नहीं है।
तो यह कोड:
$a = array(1,2,3);
... न तो प्रतियां या संदर्भ - यह सिर्फ एक नई सरणी मूल्यों के साथ यह भरता है, क्योंकि मानों सचमुच निर्दिष्ट किया गया पैदा करता है।
हालांकि, इस कोड:
$x = 1;
$y = 2;
$z = 3;
$a = array($x,$y,$z);
... प्रतियां एक सरणी में $x
, $y
और $z
से मान। सरणी मानों को प्रारंभ करने के लिए उपयोग किए जाने वाले वेरिएबल अभी भी अपने दायरे में मौजूद हैं, और सरणी में मानों को प्रभावित किए बिना संशोधित या नष्ट किया जा सकता है।
इस कोड:
$x = 1;
$y = 2;
$z = 3;
$a = array(&$x,&$y,&$z);
... $x
, $y
और $z
के लिए संदर्भ की एक सरणी (नोटिस &
) पैदा करता है। यदि, इस कोड को चलाने के बाद, मैं $x
संशोधित करता हूं - मान लें कि मैं इसे 4 का मान देता हूं - यह सरणी में पहले मान को भी संशोधित करेगा। तो जब आप सरणी का उपयोग करते हैं, $a[0]
में अब 4
होगा।
PHP में संदर्भ कार्य के बारे में अधिक जानकारी के लिए मैन्युअल के this section देखें।
प्रकार और सरणी सदस्यों के रूप में इस्तेमाल चरों के मान के आधार पर, प्रति आपरेशन भी जब से-मूल्य सौंपा कार्य के समय पर नहीं हो सकता है। आंतरिक रूप से PHP प्रदर्शन और स्मृति दक्षता के कारणों के लिए जितनी संभव हो उतनी स्थितियों में कॉपी-ऑन-राइट का उपयोग करता है। हालांकि, आपके कोड के संदर्भ में व्यवहार के संदर्भ में, आप इसे एक साधारण प्रति के रूप में देख सकते हैं।
तुम सिर्फ जानने की चाह अगर यह द्वारा एक सरणी आवंटित करने के लिए संभव है कर रहे हैं संदर्भ? या आप जानना चाहते हैं कि इसे स्वचालित रूप से करने के लिए इसे सेट करने का कोई तरीका है या नहीं? – jprofitt
मैं जानना चाहता हूं, कभी-कभी पीएचपी इंजन $ ए = सरणी (1,2,3) पास कर सकता है; $ बी = $ ए; '&' चिह्न के बिना संदर्भ द्वारा। – RusAlex