2008-12-02 14 views
26

PHP में आप तारों के पात्रों को कुछ अलग तरीकों से एक्सेस कर सकते हैं, जिनमें से एक substr() है। तुम भी घुंघराले या वर्ग कोष्ठकों के साथ एक स्ट्रिंग में वां चरित्र का उपयोग कर सकते हैं, तो जैसे:

$string = 'hello'; 

echo $string{0}; // h 
echo $string[0]; // h 

मेरा प्रश्न है, वहाँ एक दूसरे के ऊपर का एक फायदा है? {} और [] के बीच क्या अंतर है?

धन्यवाद।

उत्तर

36

उपयोग $string[0], अन्य विधि (ब्रेसिज़) PHP6 (src)

नोट में पदावनत किया जा रहा है: स्ट्रिंग्स भी $ str {42} के रूप में, ब्रेसिज़ का उपयोग कर पहुँचा जा सकता है एक ही उद्देश्य के लिए। हालांकि, यह वाक्यविन्यास PHP 6 के रूप में बहिष्कृत है। इसके बजाय वर्ग ब्रैकेट का उपयोग करें।

+0

मूल्यांकन करने की एक विधि के रूप में की {} के सेवन से भी निकाल दिया जाएगा? E.g $ {$ dynamic_object_name} -> doStuff() – Jay

+0

नहीं, मेरा मानना ​​है कि उनका लक्ष्य सरणी के रूप में तारों को एक्सेस करने का मानकीकरण करना है। – Owen

+13

भविष्य के संदर्भ के लिए मैं यह ध्यान रखना चाहूंगा कि घुंघराले सिंटैक्स को हटाए जाने के बारे में लाइन को लगभग 3 साल पहले दस्तावेज से हटा दिया गया है जिसका मतलब है कि इसे किसी भी समय जल्द ही समाप्त नहीं किया जा रहा है। – Webmut

18

There is no difference. ओवेन का जवाब पुरानी हो चुकी है, पीएचपी मैनुअल के नवीनतम संस्करण को नहीं रह गया है कहा गया है कि यह अब मान्य नहीं है §: तार के भीतर

वर्ण पहुँचा और संशोधित किया जा सकता निर्दिष्ट द्वारा शून्य आधारित की भरपाई में स्क्वायर सरणी ब्रैकेट का उपयोग करके स्ट्रिंग के बाद वांछित चरित्र। इस उद्देश्य के लिए वर्णों के अक्षरों के रूप में एक स्ट्रिंग के बारे में सोचें। [...]

नोट: स्ट्रिंग्स भी ब्रेसिज़ का उपयोग कर, $str{42} के रूप में, एक ही उद्देश्य लिए पहुंचा जा सकता

हालांकि ऐसा लगता है कि और अधिक लोगों को/परियोजनाओं [] उपयोग करते हैं, और कई लोगों को यह भी नहीं जानते कि {} संभव है। यदि आपको अपना कोड सार्वजनिक रूप से या उन लोगों के साथ साझा करना है जो घुंघराले ब्रेस वाक्यविन्यास को नहीं जानते हैं, तो [] का उपयोग करने के लिए फायदेमंद हो सकता है।

2

हां, कोई फर्क नहीं पड़ता। यह भाषा मोड़ कुछ इतिहास रहा है ...

मूल रूप से, घुंघराले ब्रेस वाक्य रचना वर्ग कोष्ठक वाक्य रचना जिसका बहिष्कार किया जा रहा था की जगह का इरादा था:

http://web.archive.org/web/20010614144731/http://www.php.net/manual/en/language.types.string.php#language.types.string.substr

बाद में उस नीति को उलट दिया गया था, और वर्ग कोष्ठक वाक्य रचना के बजाय पसंद किया जाता था:

http://web.archive.org/web/20060702080821/http://php.net/manual/en/language.types.string.php#language.types.string.substr

और यहां तक ​​कि बाद में, घुंघराले ब्रेसिज़ एक जा रहा था बहिष्कार कर दिया करने के लिए:

http://web.archive.org/web/20080612153808/http://www.php.net/manual/en/language.types.string.php#language.types.string.substr

इस लेखन के अनुसार, ऐसा लगता है कि बहिष्करण को भी वापस ले लिया गया है और उन्हें केवल दो वैकल्पिक वाक्यविन्यास माना जाता है:

http://web.archive.org/web/20160607224929/http://php.net/manual/en/language.types.string.php#language.types.string.substr

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