2010-09-13 7 views
35

उदाहरण के लिए: < < <:PHP में, "<<<" क्या दर्शाता है?

$sql = <<<MySQL_QUERY 
+0

आप [हेडोकोक] (http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc) पर PHP दस्तावेज़ को पढ़ सकते हैं के लिए वाक्यविन्यास बेहतर समझ। –

+0

यदि आपको किसी अन्य प्रतीक की व्याख्या की गई है, [यह एक अच्छा संदर्भ है] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Wrikken

+0

http: // stackoverflow.com/questions/5673269/what-is-the-advantage-of-using-heredoc-in-php – zloctb

उत्तर

33

हेड्रेडोक वाक्यविन्यास है। आप <<< और अपनी पसंद के टोकन डालकर हेड्रोक स्ट्रिंग शुरू करते हैं, और इसे केवल नई टोकन पर टोकन (और कुछ भी नहीं!) डालकर समाप्त कर देते हैं। एक सुविधा के रूप में, एक अपवाद है: अंत डिलीमीटर के बाद आपको एक अर्धविराम जोड़ने की अनुमति है।

उदाहरण:

echo <<<HEREDOC 
This is a heredoc string. 

Newlines and everything else is preserved. 
HEREDOC; 
+2

इस और नियमित स्ट्रिंग के बीच क्या अंतर है? क्यों न केवल 'गूंज' करें यह एक हेड्रोक है ..... "' – CodyBugstein

+0

@Imray जहां तक ​​मुझे याद है, आप हेड्रोक में सिंगल और डबल कोट्स और साथ ही वैरिएबल भी डाल सकते हैं और सबकुछ काम करेगा। यदि आप अपने 'इको' कथन में डबल कोट्स का उपयोग करना चाहते हैं, तो आपको उन्हें बचाना होगा। फिर भी, मैंने शुरू होने के तुरंत बाद हीरेडोक का उपयोग करना बंद कर दिया, क्योंकि मुझे इसके लिए इंडेंटेशन पैटर्न तोड़ना पसंद नहीं आया। अब मैं अपने कई तारों को सरणी के रूप में बना देता हूं जिन्हें बाद में 'implode ("\ n", $ string_array) '। –

+0

मैं तर्क दूंगा कि यदि आप अलग-अलग भाषाओं को इंजेक्ट करना चाहते हैं तो यह बहुत उपयोगी है। संगतता के बिना न्यूलाइन का उपयोग करने में सक्षम होने (जो कोड पूर्ण करने आदि को तोड़ सकता है) वास्तव में अच्छा है। – SourceOverflow

16

यह एक स्ट्रिंग की शुरुआत हियरडॉक वाक्य-विन्यास है HEREDOC syntax.

एक तिहाई तार परिसीमित करने के लिए जिस तरह से उपयोग करता है।

इस ऑपरेटर के बाद, एक पहचानकर्ता प्रदान किया जाता है, फिर एक नई लाइन। स्ट्रिंग स्वयं ही उद्धरण को बंद करने के लिए फिर से वही पहचानकर्ता का अनुसरण करती है।

+0

कूल, मुझे वह नहीं पता था ... मैंने आपके द्वारा भेजे गए लिंक को पढ़ा और ईमानदारी से पढ़ा, मैं समझता हूं क्यों मैं अब तक उस के बिना जी सकता था! ;) एक स्ट्रिंग के लिए इसका उपयोग करने का क्या फायदा होगा? – Gabriel

+7

@ गैब्रियल यह आपको स्ट्रिंग के अंदर दोनों प्रकार के उद्धरणों को तोड़ने के बिना उपयोग करने की अनुमति देता है: '<<< अंत हैलो "$ name"! आज '$ पति/पत्नी' कैसा है?अंत में, गधे में एक बड़ा दर्द है, हालांकि, 'END' मार्कर को इंडेंट नहीं किया जाना चाहिए, इसलिए हेरेडोक सामग्री आमतौर पर आपके कोड के इंडेंटेशन को तोड़ देती है। यह वास्तव में वास्तव में PHP की सबसे महत्वपूर्ण विशेषताओं में से एक नहीं है :) –

+0

@YiJiang जो वास्तव में जर्मन स्थानीयकरण की वजह से था! डॉन भौगोलिक स्थान, हमेशा मुझे गलत लिंक देता है भले ही अंग्रेजी मेरी ब्राउज़र भाषा है। ठीक किया गया, चीयर्स :) –

7

यह PHP का heredoc है।

उदाहरण:

$sql = <<<MySQL_QUERY 
SELECT * 
FROM TAB 
WHERE A = 1 AND B = 2 
MySQL_QUERY;   
5

यह heredoc syntax है।

$str = <<<EOD 
Example of string 
spanning multiple lines 
using heredoc syntax. 
EOD; 
10

यह एक heredoc कहा जाता है, और यह आप पाठ की एक लंबी टुकड़ा है कि कई लाइनों पर चला जाता है काम करने दिया। आप वहां PHP चर डाल सकते हैं और वे मूल्य के साथ प्रतिस्थापित करेंगे। शब्द चार्ट कुछ भी हो सकता है। इसे शुरू करने और रोकने के लिए बस वही होना चाहिए जहां उद्धृत पाठ शुरू होता है।

आप एकाधिक उद्धृत तारों को जोड़कर वही काम कर सकते हैं, लेकिन यह एचटीएमएल टेक्स्ट जैसे विस्तारित दस्तावेज़ों के लिए अधिकांश समय क्लीनर है। nowdoc नामक कुछ भी है जो PHP में एकल कोट स्ट्रिंग की तरह है, लेकिन ये आपको उनके अंदर चर का उपयोग करने नहीं देंगे।

+0

ओह ठीक है, धन्यवाद। एक लंबे समय की खोज करने के बजाय मुझे लगा कि मैं सिर्फ एक त्वरित सवाल पूछूंगा – user1464971

5

यह एक हेड्रोक है, लंबे तारों के लिए कि आपको उद्धरण चिह्नों और क्या नहीं के बारे में चिंता करने की ज़रूरत नहीं है। यदि आप चार्ट शब्द देखते हैं और फिर एक पंक्ति है जो चार्ट कहती है, जो स्ट्रिंग के अंत को इंगित करती है।

इस प्रारूप का उपयोग करते समय याद रखने की महत्वपूर्ण बात यह है कि स्ट्रिंग के अंत को परिभाषित करने के लिए आप जो भी स्ट्रिंग का उपयोग करते हैं (जैसे इस मामले में चार्ट), उस शब्द को अपने आप पर एक रेखा पर दिखाना है, उसके बाद अर्धविराम, और कोई भी वर्ण एक ही रेखा पर अर्धविराम के बाद भी हो सकता है, यहां तक ​​कि सफेद जगह, अन्यथा PHP सोचता है कि यह स्ट्रिंग का हिस्सा है।