PHP

2010-11-30 6 views
8

में घुंघराले ब्रैकेट को बंद करने के बाद अर्धविराम मैं एक पाठ के टुकड़े बनाने और इसे एसएमएस के माध्यम से भेजने के लिए एक स्क्रिप्ट लिख रहा हूं। इससे पहले आज मैं स्ट्रिंग में स्ट्रिंग को विभाजित करने के लिए कुछ कोड की समीक्षा कर रहा था और मैंने कुछ ऐसा देखा जो मैंने पहले कभी नहीं देखा था। मैं ";" के बारे में बात कर रहा हूँ स्निपेट में "}" के ठीक बाद।PHP

यह कॉलन क्यों? मुझे पता है कि यह काम करता है लेकिन मुझे नहीं पता कि यह कुछ अर्थशास्त्र या दुभाषिया को कुछ निर्देश जोड़ता है, किसी को पता है कि इसके लिए क्या है?

while(1) 
{ 
    $length = (strlen($output)+strlen($words[$i])); 
    if($length>$new_max) 
    { 
     if(count($words) > 0) 
     { 
      $out_array[] = $output; 
      $output = ''; 

     } 
     else 
     { 
      break;  
     } 
    } 
    else 
    { 
     $output = $output." ".$words[$i]; 
     ++$i; 
    }; 
}; 

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

+0

यह एक अच्छा सवाल है कि कोई भी एक "सर्वोत्तम अनुमान" के अलावा अन्य पर छुआ है उठाती है। जब आपके पास खाली स्टेटमेंट होता है तो कंपाइलर स्तर पर क्या होता है? –

उत्तर

12

मुझे लगता है कि उन 2 अर्धविराम यहां कुछ भी नहीं करते हैं। इसे शायद if/while के बाद तुरंत खाली अभिव्यक्ति के रूप में व्याख्या किया जा रहा है।

+0

मुझे लगता है कि यह बेकार है लेकिन मैं सुनिश्चित करना चाहता हूं :) धन्यवाद। – SubniC

+0

इवान सही है। अतिरिक्त अर्धविराम व्यर्थ है। – DampeS8N

+0

सही, बिल्कुल कुछ भी नहीं हो रहा है जहां दो अर्धविराम हैं। – BoltClock

4

ये अनावश्यक हैं। वे स्क्रिप्ट को चोट नहीं पहुंचाते, केवल अनावश्यक। प्रोग्रामर शायद प्रत्येक कथन के अंत में अर्धविराम जोड़ने की आदत रखता था। हो सकता है कि वह इस आदत को एक और प्रोग्रामिंग भाषा से प्राप्त कर ले, शायद उसका आईडीई सेमीकॉलन के बिना त्रुटियों को दिखा रहा था या शायद वह सिर्फ एक नौसिखिया है। किसी भी घटना में, न तो चोट पहुंची और न ही मदद की। यह भी तथ्य है कि प्रोग्रामर का उपयोग करता है (1) मुझे बताता है कि वह या तो बेहद आलसी है, क्योंकि आम तौर पर एक प्रोग्रामर लिखने के दौरान लिखता है (सत्य), 1 टाइप करने का एकमात्र कारण यह है क्योंकि यह कम टाइपिंग है। किसी भी प्रकार के औपचारिक प्रशिक्षण के साथ एक प्रोग्रामर लिखने के दौरान (1) जबकि (सत्य) के बजाय नहीं लिखेंगे। यह मेरी राय है, लेकिन यह 3 भाषाओं में प्रोग्रामिंग के 10 से अधिक वर्षों पर आधारित है।

+1

+1 मैं आपके अधिकांश उत्तर से सहमत हूं। मेरे पास कम अनुभव है लेकिन मैं थोड़ी देर देखता हूं (1) यह (सत्य) की तुलना में समझने के लिए अधिक भिन्न नहीं है। जिस चीज को मैं इंगित करूंगा वह है "++ $ i;" क्यों नहीं "$ आउटपुट = $ आउटपुट।" "$ शब्द [++ $ i];।" और आप एक कम लाइन का उपयोग करते हैं। – SubniC

+1

एक आम कारण है कि कोई व्यक्ति '(1)' लिखता है, यदि वह मूल रूप से एक सी डेवलपर हैं: -पी। –

+0

इसके अलावा, '$ शब्द [++ $ i]' लिखना क्यों नहीं है क्योंकि यह गड़बड़ करना आसान है। उदाहरण के लिए, जो आप लिखते हैं वह गलत है, यह होना चाहिए: '$ शब्द [$ i ++] '। अंतर यह है कि बाद में मूल '$ i' इंडेक्स के रूप में उपयोग करता है और आपका संस्करण नए '$ i' का उपयोग करता है। –

0

कुछ लोग // समाप्ति या // एंडिफ़ का संकेत देते हैं कि यह कहां से आया था। दूसरों ने ब्रेसिज़ के बाद सेमी-कोलन लगाए। दोनों तकनीकें हानिरहित हैं और डेवलपर को बस आती हैं।

मुझे लगता है कि यह प्रोग्रामर अपने कोडिंग पर भरोसा नहीं करता है, बिना शैली के टेक्स्ट बुक बुक में भी कोडिंग कर रहा है - ब्रेस पोजिशन, असंगत दूरी, और थोड़ी देर (1) बस है। .. ऐसा करने की सलाह नहीं है।

+0

हाय @ मार्क मेयो, मैं // endwhile या // endif के उपयोग को समझता हूं क्योंकि यह आपको बताता है कि वाक्य कहां खत्म हो गया है, लेकिन; बस कुछ भी नहीं डालने की तरह मेरा मतलब है कि वहां कोई अर्थशास्त्र नहीं है। – SubniC

+0

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

+0

घुंघराले ब्रैकेट सी में पसंद नहीं हैं? वे स्कोप्स घोषित करते हैं। – SubniC

1

कुछ मामलों में आपको एक बंद घुंघराले ब्रैकेट के बाद अर्धविराम होना चाहिए!

उदाहरण:

if(1==1): 
    if(true){ echo "it's true"; } //no semicolon here => syntax error! 
else: 
    echo "no never ever"; 
endif; 
बेशक

आप अगर वहाँ केवल php कोड है नियंत्रण संरचनाओं के लिए विकल्प सिंटैक्स का उपयोग would't।

लेकिन यदि आपके पास HTML और PHP कोड का मिश्रण है तो आप नियंत्रण संरचनाओं के लिए वैकल्पिक वाक्यविन्यास का उपयोग कर सकते हैं (वैकल्पिक वाक्यविन्यास कोड को केवल स्पष्ट और पढ़ने में आसान बनाता है), लेकिन समस्या यह है कि कुछ मामलों में एक प्लगइन या उदाहरण के लिए एक सीएमएस का एक टैग पार्सर "अन्यथा" से पहले घुंघराले ब्रैकेट ("समापन अर्धविराम" के बिना) के साथ एक कथन उत्पन्न कर सकता है और इससे परिणामस्वरूप php फ़ाइल में सिंटैक्स त्रुटि हो जाएगी।

ऊपर कोड इस तरह काम करेगा:

if(1==1): 
    if(true){ echo "it's true"; }; 
else: 
    echo "no never ever"; 
endif; 
संबंधित मुद्दे

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