2011-11-29 4 views
8

मेरे समझ है ...is_numeric() बनाम is_float() बनाम is_int()

अगर is_numeric($input) === true

तो या तो

is_float($input) === true या

is_int($input) === true या

$input === 0 या

$input एक संख्यात्मक स्ट्रिंग है (जिसका अर्थ है कि यह पहले 3 में से एक को संतुष्ट करेगा यदि यह उद्धरणों में लपेटा नहीं गया था)।

क्या यह सही है? क्या अन्य मतभेद हैं?

+2

इस तालिका की सामग्री को पढ़ें: http://php.net/manual/en/language.types.php शायद यह वही है जो आप खोज रहे हैं .. –

+0

मुझे लगता है कि मैं फ्लोट्स के बारे में सबसे उलझन में था। मैं इसे लेता हूं कि जो कुछ भी एक फ्लोट है वह भी संख्यात्मक है लेकिन विपरीत नहीं है। – ryanve

उत्तर

24

PHP के देखें प्रलेखन के सबसे युक्त स्ट्रिंग। यह अनुमति देने वाली हर चीज़ के बारे में बात करता है, और यह is_float और is_int से अधिक है।


यह भी ध्यान रखें कि is_int केवल चीजें हैं जो प्रकार पूर्णांक हैं, जिसका अर्थ स्ट्रिंग अभ्यावेदन की अनुमति नहीं है पर काम करता है महत्वपूर्ण है। यह एक सामान्य समस्या है जब उस फॉर्म इनपुट को सत्यापित करना एक पूर्णांक है। आपको filter_var या फिल्टर परिवार से फ़िल्टर FILTER_VALIDATE_INT फ़िल्टर का उपयोग करना चाहिए। फ्लोट्स के लिए, FILTER_VALIDATE_FLOAT का उपयोग करें।


इसके अलावा, अगर कारण है कि आप एक पूर्णांक के लिए जाँच करने के लिए कोशिश कर रहे हैं किसी पूर्णांक होने के रूप में एक पैरामीटर मान्य करने के लिए है, तो पीएचपी 7 में आप यह कर सकते हैं:

function foo(int $i) { 
    // $i is guaranteed to be an int (is_int) will be true 
} 

पीएचपी 7 दो है int में कनवर्ट करने के लिए अलग-अलग तरीके; this answer इसे थोड़ा और बताता है।

ध्यान दें कि यदि आप किसी फॉर्म तत्व की सामग्री को मान्य कर रहे हैं तो शायद यह नहीं है कि आप क्या चाहते हैं। इसके लिए filter_var समाधान का उपयोग करें।

+0

Thx - 'filter_var' – ryanve

+0

के बारे में अच्छी युक्ति आपको फ़ंक्शन की आवश्यकता नहीं है, आप इसे पूर्णांक में डाल सकते हैं:' $ n = (int) $ i' –

2

docs देखें। एक अंकीय मान हो सकता है:

  • एक पूर्णांक
  • एक नाव
  • घातीय
  • एक सकारात्मक हेक्साडेसिमल
  • एक is_numeric पर इन
+0

Thx // घातीय नोटेशन फ्लोट्स में शामिल है। आप हेक्स के बारे में सही हैं-ऐसा लगता है कि वे नहीं हैं और is_hex फ़ंक्शन नहीं है। – ryanve

+0

@ryanve यह PHP के लिए है, लेकिन मैं आमतौर पर घातीय (वैज्ञानिक) को एक फ्लोट पर विचार नहीं करता। – fncomp