2011-04-09 28 views
157

में वेरिएबल को सीधे सम्मिलित करें या सीधे डालें, मुझे आश्चर्य है, स्ट्रिंग में PHP चर डालने का उचित तरीका क्या है?

इस तरह:
PHP - स्ट्रिंग

echo "Welcome ".$name."!" 

या इस तरह से:

echo "Welcome $name!" 

इन तरीकों में से दोनों मेरी PHP v5.3.5 में काम करते हैं। उत्तरार्द्ध छोटा और सरल है लेकिन मुझे यकीन नहीं है कि पहला बेहतर प्रारूपण या अधिक उचित के रूप में स्वीकार किया गया है या नहीं।

+14

अगर आप पहले क्या कर रहे थे, मैं व्यक्तिगत रूप से एकल उद्धरण 'गूंज 'में आपका स्वागत है' पसंद करते हैं $ नाम '!'; ' – kjy112

+1

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double –

+1

@ kjy112 मैंने अपने जवाब में वही बात कहा, मैं सिंगल कोट्स का एक बड़ा प्रशंसक हूं: एक्स – Khez

उत्तर

249
उन दोनों वाक्यविन्यास के बीच

, तुम सच में एक आप पसंद करते हैं :-)

व्यक्तिगत रूप से का चयन करना चाहिए, मैं इस तरह के एक मामले में अपने दूसरे समाधान के साथ जाना होगा (वैरिएबल प्रक्षेप), जो मैं दोनों के लिए आसान लगता है लिखो और पढ़ें।

परिणाम वही होगा; और यहां तक ​​कि यदि प्रदर्शन प्रभाव भी हैं, तो इससे कोई फर्क नहीं पड़ता ।


एक sidenote के रूप है, तो मेरा उत्तर में थोड़ा और अधिक पूरा हो गया है: दिन आप कुछ इस तरह के लिए करना चाहेंगे:

echo "Welcome $names!"; 

पीएचपी के रूप में यदि आप का उपयोग करने की कोशिश कर रहे थे अपने कोड की व्याख्या करेगा $names चर - जो मौजूद नहीं है।

echo "Welcome {$name}s!" 

concatenations पर वापस आने की कोई जरूरत नहीं:

उस दिन, आप {} का उपयोग करना होगा।


भी ध्यान रखें कि आपका पहला वाक्य रचना:

echo "Welcome ".$name."!"; 

शायद जा अनुकूलित किया जा सका, concatenations से परहेज, का उपयोग करते हुए:,

echo "Welcome ", $name, "!"; 

(लेकिन जैसा कि मैंने पहले कहा, यह नहीं करता है इससे कोई फर्क नहीं पड़ता ...)


1 - जब तक आप सैकड़ों हजारों संगतता बनाम इंटरपोलेशंस नहीं कर रहे हैं - और शायद यह काफी मामला नहीं है।

+2

बढ़िया, धन्यवाद! यह जानना बहुत अच्छा है कि मैं इसे सीधे स्ट्रिंग में डालने की अपनी पसंदीदा विधि का उपयोग कर सकता हूं, और अब मैं यह जानने के लिए बहुत आभारी हूं कि '{} 'का उपयोग करने की आवश्यकता होने पर चर के बाकी हिस्सों से चर को अलग करना है। –

+1

आपका स्वागत है :-) मज़े करो! –

+3

@inquisitive_web_developer आपको नहीं लगता कि इस तरह के उत्कृष्ट उत्तर को स्वीकार करना अच्छा होगा? –

1

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

यदि डबल कोट के अंदर चर वैरिएबल पार्स करने के लिए समय लेता है।

चेक बाहर इस Single quotes or double quotes for variable concatenation?

यह एक और उदाहरण Is there a performance benefit single quote vs double quote in php?

मैं समझ में नहीं आया कि क्यों ऊपर के लिंक में इस उत्तर upvoted जाते हैं और यही कारण है कि इस उत्तर downvote मिला है।

जैसा कि मैंने एक ही बात कहा था।

साथ ही आप यहां देख सकते हैं

What is faster in PHP, single or double quotes?

+5

-1 समयपूर्व अनुकूलन के लिए। प्रदर्शन में अंतर एक कारक होने के लिए पर्याप्त नहीं है जब तक कि आप एक स्क्रिप्ट में लाखों बार प्रिंट नहीं कर रहे हैं - और फिर भी, आप जो भी अन्य प्रसंस्करण करते हैं, वह अतिरिक्त कुछ सेकंडों को बौने करेगा जो आप दूसरे के बजाय एक तरीके से प्रिंट कर सकते हैं । उनके बीच बड़ा अंतर पठनीयता है (जो मुझे दूसरी शैली पसंद करता है)। – cHao

+1

मैं आपके अंतिम प्रश्न का उत्तर देने का प्रयास कर सकता हूं। PHP समुदाय में कई जंगली अफवाहें हैं और उनमें से कुछ बहुत मजबूत हैं। उन्हें प्रकट करने और समय लेने के लिए यह बहुत बड़ा संघर्ष है। लेकिन धीरे-धीरे यह बदल रहा है। इसलिए, जब आप लोगों की परवाह नहीं करते थे, तब से जो जवाब आपने लिंक किया था वह पुराना है। जबकि इस में कुछ लोगों ने अपने स्वयं के अनुभव के आधार पर उत्तर दिया, कुछ लेखों पर उन्होंने नहीं पढ़ा। –

+0

प्रदर्शन हानि झूठी +1 @cHao है। यह साबित करने वाले मीट्रिक के साथ एक लेख यहां दिया गया है। https://nikic.github.io/2012/01/09/Disproving-the- सिंगल-Quotes- प्रदर्शन - Myth.html – Damian

5

या तो एक ठीक है। उस व्यक्ति का उपयोग करें जिसमें आपके लिए बेहतर दृश्यता है। और दृश्यता की बात करते हुए आप printf भी देख सकते हैं।

2

पहले के साथ जाएं और सिंगल कोट्स का उपयोग करें!

  1. यह पढ़ने में आसान है, अन्य प्रोग्रामर अर्थ पता चल जाएगा क्या हो रहा है
  2. यह थोड़ा तेज, जिस तरह से opcodes बनाई गई हैं काम करता है जब पीएचपी अपने स्रोत कोड dissects, यह है कि वैसे भी, इसलिए इसे एक की मदद मूल रूप वाला है हाथ!
  3. यदि आप डबल कोट्स के बजाय सिंगल कोट्स का भी उपयोग करते हैं तो आप अपने प्रदर्शन को और भी बढ़ावा देंगे।

जब आप दोहरे उद्धरण चिह्नों का उपयोग करना चाहिए केवल स्थितियों, जब आप \r, \n, \t की जरूरत है! ओवरहेड किसी अन्य मामले में इसका उपयोग करने के लिए इसके लायक नहीं है।

आपको चीजों को करने के विभिन्न तरीकों पर कुछ बेंचमार्क के लिए PHP variable concatenation, phpbench.com भी जांचना चाहिए।

+14

-1: एकल उद्धरणों का उपयोग करने पर प्रदर्शन पर कोई वास्तविक जीवन प्रभाव नहीं है। लिंक किया गया पृष्ठ * माइक्रोसॉन्ड * में दो विधियों के बीच मतभेद दिखाता है, जो कि ** 0.000001 ** सेकेंड है। किसी भी डेटाबेस क्वेरी उस समय सैकड़ों बार लेने जा रही है। यह बहस पूरी तरह से व्यर्थ है। –

2

यह केवल स्वाद का विषय है।
जो कुछ भी आप चाहते हैं उसका प्रयोग करें।

अधिकांश समय मैं दूसरे का उपयोग कर रहा हूं लेकिन यह निर्भर करता है।

मुझे अपने आप को एक अच्छे संपादक जो एक स्ट्रिंग के अंदर एक चर

+0

मुझे textarea की आवश्यकता है। ** पीएसपीएड ** चट्टानों। –

10

डबल उद्धृत तार अधिक सुंदर हैं पर प्रकाश डाला जाएगा, क्योंकि आप अपने स्ट्रिंग हर बार जब आप की जरूरत को तोड़ने के लिए नहीं है पाने के लिए भी आप सुझाव देते हैं एक चर डालने के लिए (जैसे आपको एकल-उद्धृत तारों के साथ करना होगा)।

हालांकि, अगर आपको किसी फ़ंक्शन का रिटर्न वैल्यू डालने की आवश्यकता है, तो इसे डबल-उद्धृत स्ट्रिंग में डाला नहीं जा सकता है - भले ही आप इसे ब्रेसिज़ से घिराएं!

//syntax error!! 
//$s = "Hello {trim($world)}!" 

//the only option 
$s = "Hello " . trim($world) . "!"; 
+7

आप PHP 5.3 वैरिएबल फ़ंक्शंस के माध्यम से स्ट्रिंग में सेमी-अप्रत्यक्ष रूप से कार्य सम्मिलित कर सकते हैं। '$ x = फ़ंक्शन() {...}; $ string = "हैलो {$ x (ब्ला ब्ला ब्लाह)}" ', जो" प्रतिबंध "के आसपास काम करता है। –

+3

@Marc यह अच्छा है, मुझे यह नहीं पता था! आप किसी मौजूदा फ़ंक्शन का नाम एक चर में असाइन कर सकते हैं और वही काम कर सकते हैं: '$ x = 'trim'; $ string = "हैलो {$ x ('blah blah blah')}"; ' – Michael

+2

यह अच्छा है लेकिन बेहद अपठनीय है, इसलिए, किसी को भी इसे टालना होगा। –

2

संगत नहीं है। यह आवश्यक नहीं है, हमें गूंज के रूप में अल्पविरामों से अधिक पैरामीटर

echo "Welcome ", $name, "!"; 

एकल या डबल उद्धरण अंतर नगण्य है का उपयोग कर, आप तार की बड़ी संख्या अपने आप के लिए परीक्षण करने के लिए के साथ परीक्षण कर सकते हैं के बारे में ले जा सकते हैं।

+5

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

3

बनाने की दृष्टि से सोचता है सरल, पठनीय, संगत और को समझने के लिए (प्रदर्शन नहीं करता है के बाद से बात यहाँ) आसान: में एम्बेडेड वार्स का उपयोग

  • जब आप ऑब्जेक्ट गुणों, बहुआयामी सरणी इत्यादि को एम्बेड करना चाहते हैं तो डबल कोट्स जटिल और भ्रमित परिस्थितियों का कारण बन सकते हैं। आम तौर पर एम्बेडेड वर्र्स पढ़ने पर, आप तुरंत 100% निश्चित रूप से व्हाए के अंतिम व्यवहार के बारे में सुनिश्चित नहीं हो सकते आप पढ़ रहे हैं

  • आप अक्सर {} और \ के रूप में ऐसी बैसाखी जोड़ने के लिए, जो IMO भ्रम कहते हैं और संयोजन पठनीयता लगभग बराबर है, नहीं तो बेहतर बनाता है की जरूरत है।

  • जैसे ही आपको var के चारों ओर एक फ़ंक्शन कॉल लपेटने की आवश्यकता होती है, उदाहरण के लिए htmlspecialchars($var), आपको concatenation पर स्विच करना होगा।

  • AFAIK, आप स्थिरांक एम्बेड नहीं कर सकते हैं।

कुछ विशेष मामलों में, उपयोगी हो सकता है, लेकिन आम तौर पर बोल रहा है "वार्स एम्बेड करने के साथ डबल कोट्स", मैं संयोजन के लिए जाना होगा

3

मैं यह जानता हूँ (जब सुविधाजनक एकल या डबल उद्धरण का उपयोग) प्रश्न में पहले से ही एक चुना गया जवाब है, लेकिन मुझे this article मिला जो स्पष्ट रूप से दिखाता है कि स्ट्रिंग इंटरपोलेशन कॉन्सटेनेशन से तेज़ी से काम करता है। यह उन लोगों के लिए सहायक हो सकता है जो अभी भी संदेह में हैं।

3

php4 जब से तुम एक स्ट्रिंग formater उपयोग कर सकते हैं:।

$num = 5; 
$word = 'banana'; 
$format = 'can you say %d times the word %s'; 
echo sprintf($format, $num, $word); 
+0

यह मुझे लगता है कि सी ++ शैली से विरासत में मिला है। मुझे इस तरह के तारों को कभी पसंद नहीं आया। मुझे बहुत उलझन में आता है। – MJoraid