2010-05-13 9 views
59
निम्नलिखित की तरह

मैंने देखा है उदाहरण:PHP एरे उदाहरण क्यों एक पिछला कॉमा छोड़ते हैं?

$data = array(
    'username' => $user->getUsername(), 
    'userpass' => $user->getPassword(), 
    'email' => $user->getEmail(), 
); 

हालाँकि, व्यवहार में मैं अनुगामी अल्पविराम हमेशा नहीं छोड़ दिया है। क्या मैं कुछ गलत कर रहा हूं, या यह सिर्फ ऐसा करने का 'दूसरा' तरीका है? अगर मैं ढांचे का उपयोग कर रहा था, तो पिछली कॉमा को कोड पीढ़ी को नकारात्मक रूप से प्रभावित नहीं किया जाएगा? मैंने अन्य भाषाओं (जावा, सी ++) में सरणी घोषणाओं में पिछली कॉमा के उपयोग को भी देखा है, इसलिए मुझे लगता है कि पिछला कॉमा छोड़ने के कारण PHP के लिए विशिष्ट नहीं हैं, लेकिन इसने मेरी रुचि को पिक्चर किया है।

+1

मैं शपथ ले सकता था कि जब मैं PHP में प्रशिक्षण कॉमा छोड़ देता हूं तो मुझे पार्स त्रुटियां मिल रही थीं। –

+0

यह संभव है, मुझे लगता है। इस विशेष उदाहरण में यह सिर्फ ठीक है। – ashurexm

+0

हाँ @ लोटस नोट्स मुझे यकीन है कि मुझे इससे पहले भी त्रुटियां हुई हैं। लेकिन स्पष्ट रूप से, अब और नहीं! –

उत्तर

74

PHP एरे उदाहरण क्यों एक पिछला कॉमा छोड़ते हैं?

क्योंकि वे कर सकते हैं। :) PHP Manual entry for array कहता है:

अंतिम परिभाषित सरणी प्रविष्टि के बाद पिछली कॉमा होने के दौरान, असामान्य होने पर, वैध वाक्यविन्यास होता है।

गंभीरता से, यह पूरी तरह से सुविधा के लिए है ताकि आप पिछली प्रविष्टि में पिछली कॉमा को पहले बिना जोड़कर आसानी से सरणी में एक और तत्व जोड़ सकें।

अन्य भाषाओं की बात करना: जावास्क्रिप्ट में इसके साथ सावधान रहें। फ़ायरफ़ॉक्स दृढ़ता से पिछली कॉमा को बर्दाश्त करेगा; इंटरनेट एक्सप्लोरर, ठीक है, एक त्रुटि फेंक देगा।

+1

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

+0

@manyx yup, इसके साथ कुछ भी गलत नहीं है। मुझे यकीन नहीं है कि क्या पिछली कॉमा रखने में सक्षम होना एक अच्छी बात है। यह कोड की समीक्षा करते समय एक वाक्यविन्यास त्रुटि की तरह दिखता है। –

+1

IE6/7 कोड की तुलना में जावास्क्रिप्ट के नए संस्करण स्पष्ट रूप से इसे अनुमति देने के लिए, अब। – staticsan

4

मैं अन्य लोगों के लिए बात नहीं कर सकता, लेकिन मैं आमतौर पर अपने कोड में पिछली कॉमा छोड़ देता हूं। मैं ऐसा इसलिए करता हूं क्योंकि अगर मैं बाद में सरणी में जोड़ता हूं, तो मुझे पिछली पंक्ति में कॉमा जोड़ने के लिए भूलने के कारण कॉमा को खोने के बारे में चिंता करने की ज़रूरत नहीं है।

3

मैं हमेशा पिछला कॉमा कर रहा हूं क्योंकि यह नए सरणी तत्व जोड़ते समय वाक्यविन्यास त्रुटियों से बचने में मदद करता है ... यह सिर्फ एक अच्छा अभ्यास है।

+2

मुझे इसे पुनर्जीवित करने के लिए खेद है, लेकिन पिछली कॉमा बाद में वाक्यविन्यास त्रुटियों को कैसे रोकती है? मुझे अभी पता चला है कि PHP पिछली कॉमा के लिए अनुमति देता है - लेकिन मैं इसके लिए उपयोग नहीं देख/ढूंढ सकता हूं। बाद में नई अनुक्रमणिका जोड़ना अभी भी '$ arr [] = ...' के माध्यम से किया जाता है। – Daniel

+0

@ डैनियल, वह बाद में स्रोत कोड पर लौटने और सरणी के लिए एक और पंक्ति जोड़ने के बारे में बात कर रहा है। –

15

एकाधिक लाइनों पर सरणी को परिभाषित करते समय यह एक अच्छा अभ्यास है। यह भी ZendFramework's coding standards द्वारा प्रोत्साहित किया है:

बाद इस घोषणा का उपयोग करते समय, हम सरणी में अंतिम आइटम के लिए एक अनुगामी अल्पविराम का उपयोग कर के लिए प्रोत्साहित करते ; यह लगातार लगातार लाइनों पर आइटम जोड़ने के प्रभाव को कम करता है, और को एक अनुपलब्ध कॉमा के कारण कोई पार्स त्रुटियां सुनिश्चित करने में सहायता करता है।

3

मुझे लगता है कि भले ही इसे अनुमति दी गई है, यह खराब अभ्यास है, यह आपके कार्यों और लूप के अंतिम अर्ध कोलन को छोड़ने जैसा है।

2

क्योंकि यह प्रविष्टियों को वर्दी रखता है।

यदि आपको ऑर्डर स्वैप करना पड़ा है, या प्रविष्टियों को जोड़ना या हटाना है, तो आप जानते हैं कि पिछली कॉमा छोड़ने में सक्षम होना बहुत सुविधाजनक है।

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

अंतिम तत्व पर पिछली कॉमा की अनुमति देकर, यह प्रोग्रामर को इस परेशान और फलहीन विस्तार से मुक्त होने से मुक्त करता है।

10

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

+0

और यह निश्चित रूप से, पीछे आने वाले अल्पविराम क्यों हैं :) डिफ स्थिरता – Ninj

+0

मुझे नहीं पता कि इसका कोई संबंध नहीं है कि यह वहां क्यों है। मुझे नहीं लगता। लेकिन मुझे यह उपयोगी लगता है। – user985366

+0

लेकिन यह * कारण है कि यह यहां क्यों है। कोई कह सकता है कि अगली पंक्ति में गलतियों को रोकने के लिए यह यहां है। लेकिन ऐसा नहीं है, क्योंकि आजकल कोई आईडीई आपको कम किए बिना लाइन जोड़ने देता है, यह एक त्रुटि नोटिस पॉप करेगा। – Ninj

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