2010-02-03 11 views
5

का उपयोग करने के लिए किस प्रकार के कार्यों का उपयोग करूंगा, यह एक बहुत ही बुनियादी सवाल है, लेकिन मैं विशेषज्ञ सलाह चाहता हूं, यही कारण है कि इसे यहां पोस्ट करना।मैं

यहां दो कार्य हैं,
दोनों के बीच क्या अंतर है? क्या वे दोनों समान रूप से कुशल हैं और सर्वोत्तम प्रथाओं को शामिल करते हैं या उनमें से कौन सा प्रोग्रामिंग में उपयोग करना बेहतर है।

function is_numeric($number) 
{ 
    if(!preg_match("/^[0-9]+$/",$number)) 
     return false; 
    return true; 
} 

function is_numeric($number) 
{ 
    if(preg_match("/^[0-9]+$/",$number)) 
     return true; 
    else 
     return false; 
} 

उत्तर

16

कुछ कोडिंग मानकों का कहना है कि पहली शाखा सबसे अधिक संभावना होनी चाहिए, जबकि अन्य शाखा को अधिक असाधारण चीजों का सामना करना चाहिए।

लेकिन यह पूरी तरह से गूढ़ है, जो कुछ भी आप चाहते हैं उसे चुनें।

मेरी निजी राय में, बल्कि

function is_numeric($number) 
{ 
    return preg_match("/^[0-9]+$/",$number); 
} 

रूप preg_match एक बूलियन रिटर्न का उपयोग करें।

+3

+1 अच्छा बिंदु - यहां बिल्कुल शाखा की आवश्यकता नहीं है। –

+0

हाँ, मेरे द्वारा +1 भी बहुत बुद्धिमान उत्तर। धन्यवाद श्री मुल्लेर –

+1

असल में preg \ _match() या तो 0 या 1 लौटाएं। लेकिन अगर एक बूलियन संदर्भ php में उपयोग किया जाता है तो उन्हें गलत या सत्य में डाल दिया जाता है। सी # जैसी भाषाओं में ऐसी कोई अंतर्निहित कलाकार नहीं है और आपको 'वापसी 1 === preg_match (...) ' – VolkerK

6

वे समकक्ष हैं - जो भी आप अधिक पठनीय होने के लिए चुनते हैं चुनें।

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

इन दोनों कोड उदाहरण कार्यात्मक रूप से समान हैं और समान रूप से प्रदर्शन करेंगे।

+0

आपके उत्तर के लिए धन्यवाद श्री हरे :) –

+0

सहमत हैं, हमेशा अधिक पठनीय विकल्प के लिए जाएं और लिखने के लिए सबसे आसान नहीं है। यह सिद्धांत पर आधारित है जिसे आप एक बार कोड लिखते हैं लेकिन इसे कई बार पढ़ते हैं। – DanDan

4

PHP में is_numeric() फ़ंक्शन में निर्मित है: http://php.net/manual/en/function.is-numeric.php इसका उपयोग क्यों न करें।

+0

:) लिंक "http://in.php.net/manual/en/function.is-numeric.php" कहता है कि "संख्यात्मक तारों में वैकल्पिक चिह्न, संख्याओं की संख्या, वैकल्पिक दशमलव भाग और वैकल्पिक घातीय भाग।इस प्रकार + 0123.45e6 एक मान्य संख्यात्मक मान है। हेक्साडेसिमल नोटेशन (0xFF) को भी अनुमति है, केवल साइन, दशमलव और घातीय भाग के बिना। " –

+0

' ctype_digit() 'फ़ंक्शन को देखने का प्रयास करें। हालांकि, मुझे यकीन नहीं है कि इनपुट पैरामीटर को स्पष्ट रूप से स्ट्रिंग होना चाहिए या नहीं किसी भी ऑब्जेक्ट प्रकार को स्वीकार करेंगे। –

+0

ctype_digit() में आपका पैरामीटर उद्धरणों में संलग्न होना चाहिए। यदि आपको यह ctype_digit (57) पसंद है, तो यह झूठी –

4

कैसे के बारे में:

function is_numeric($number) 
{ 
    return preg_match("/^[0-9]+$/",$number); 
} 

यह हालांकि एक प्रदर्शन में अंतर पैदा करने के लिए नहीं जा रहा है।

+0

उत्तर के लिए धन्यवाद, लेकिन स्टीफन मुल्लेर ने पहले से ही जवाब दिया है :) –

3

कैसे के बारे में:

function is_numeric($number) { 
    return preg_match("/^[0-9]+$/",$number); 
} 
4

एक पठनीयता दृष्टिकोण यह सकारात्मक खंड बेहतर है, क्योंकि लोगों को याद करने की संभावना है से! जब वे स्रोत पढ़ते हैं, जो कोड की गलत समझ को जन्म देता है और अक्सर परिणामस्वरूप: बग।

स्टीफन का एक वैध बिंदु है। मुझे लगता है कि यह दो कोड ब्लॉक के आकार पर निर्भर करता है। यदि वे कम या ज्यादा बराबर हैं, तो मैं अगर कथन में अस्वीकृत खंड का उपयोग नहीं करता हूं।

+0

हाँ, बहुत सच है। स्रोत पढ़ने के दौरान "!" गायब होने की उच्च संभावना है। –