2010-10-11 8 views
6

मैं PHP के लिए एक पार्सर लिख रहा हूं और कुछ तृतीय-पक्ष कोड के साथ गड़बड़ कर रहा हूं, मैं [] ऑपरेटर के संबंध में एक अजीब मामला चलाता हूं।PHP सरणी से पढ़ने पर [] का मतलब क्या है?

आम तौर पर, [] असाइनमेंट के बाईं ओर एक कुंजी के बिना प्रयोग किया जाता है जिसका अर्थ है "अंतिम तत्व के रूप में जोड़ें"।

$a = array(); 
$a[] = 1; 

सरणी $ ए के अंत में 1 जोड़ देगा।

ऊपर उल्लिखित कोड में हालांकि, मैं इस तरह की एक पंक्ति देखा:

$r =& $a[]; 

जब मैं & को दूर करने की कोशिश की, मैं एक नहीं बल्कि उम्मीद गंभीर त्रुटि है: & साथ

Fatal error: Cannot use [] for reading

हालांकि, PHP बिल्कुल शिकायत नहीं करता है।

& $a[]; 

अभिव्यक्ति का अर्थ क्या है?

उत्तर

12

वाक्यविन्यास का अर्थ है "$ [[]" के संदर्भ का उपयोग करें या नवीनतम बनाए गए सरणी तत्व का संदर्भ दें।

<?php 
$a=array(); 
$a[] = "a"; 
$a[] = "b"; 

print_r($a); 

$r =& $a[]; 

print_r($a); 

$r = "c"; 

print_r($a); 

पैदा करता है:

Array 
(
    [0] => a 
    [1] => b 
) 
Array 
(
    [0] => a 
    [1] => b 
    [2] => 
) 
Array 
(
    [0] => a 
    [1] => b 
    [2] => c 
) 
+19

अब हम जानते हैं कि इसका क्या अर्थ है, आइए सभी वादे इसका कभी भी उपयोग न करें। – webbiedave

+0

हमें वास्तव में अवश्य ही होना चाहिए। :-) – Yiannis

1

मेरा अनुमान है कि यह सरणी के लिए एक खाली तत्व को जोड़ता है और $ कि सरणी तत्व के लिए एक संदर्भ r देता है। क्या आप निश्चित हैं कि $ ए को सरणी माना जाता है? यह [] वाक्यविन्यास का उपयोग करके एक स्ट्रिंग के एक चरित्र तक पहुंचने का प्रयास भी कर सकता है, इस मामले में मुझे नहीं पता कि यह कैसे काम करेगा।

संबंधित मुद्दे