2012-10-24 10 views
5

संभव डुप्लिकेट:
php: ‘0’ as a string with empty()

मैं तो कुछ ऐसे स्वरूप में एक इनपुट है

<input name='var' type='number'> 

जब फॉर्म सबमिट किया जाता है, इनपुट POST के माध्यम से एक PHP फ़ाइल में भेजा जाता है। PHP फ़ाइल पर, यह टेक्स्ट बॉक्स में देखने के लिए जाँच करता है, तो इनपुट की जाँच

empty($_POST['var']) 

जब मैं में प्रवेश द्वारा भरे है '0' (शून्य) और फार्म, पीएचपी कोड रिटर्न '1' के लिए प्रस्तुत खाली ($ _ POST ['var']) भले ही मैंने print_r ($ _ POST) और 'var' का प्रयास किया है, स्पष्ट रूप से '0' का मान है।

क्या ऐसा होना चाहिए? क्या मुझे इस अपवाद के लिए == 0 की जांच करने की आवश्यकता है? धन्यवाद।

+1

हाँ, [यह दस्तावेज है] (http://us2.php.net/manual/en/function.empty.php)। शून्य, स्ट्रिंग, int, और फ्लोट रूपों में एक "खाली" मान है। –

+2

यदि आपको शून्य मामले के आसपास कोड करने की आवश्यकता है, तो 'if (खाली ($ _ POST [' var ']) &&! Is_numeric ($ _ POST [' var ']) का उपयोग करें) –

+0

प्रलेखन लिंक के लिए धन्यवाद, नहीं देखा पहले सूची है। :) क्या आपकी टिप्पणी को उत्तर के रूप में चिह्नित करने का कोई तरीका है? – AnsonL

उत्तर

0

आप केवल का उपयोग नहीं कर सकते हैं यह जांचने के लिए कि क्या यह खाली स्ट्रिंग है या स्ट्रिंग में केवल खाली चार है।

उपयोग इस तरह:

function isEmpty($key) { 
    return isset($_POST[$key]) && trim($_POST[$key]) === ''; 
} 
+0

खाली रिक्त स्थान पर सलाह के लिए धन्यवाद, मैं पहले से ही सत्यापन के लिए regex का उपयोग कर रहा हूँ। – AnsonL

3

जानने के लिए कि क्षेत्र या भरा नहीं है, isset($_POST['var']) बजाय empty($_POST['var']) का इस्तेमाल करें।

+0

हालांकि इसकी अपनी चेतावनी है। 'isset()' खाली स्ट्रिंग पर 'TRUE' वापस कर देगा, जो '$ _POST' कुंजी के प्रयोजनों के लिए इच्छित व्यवहार नहीं हो सकता है। –

0

खाली() सत्य लौटाता है यदि चर की जांच की जा रही है, 0, खाली स्ट्रिंग ', झूठी, खाली सरणी, या शून्य। तो आप जो परिणाम देख रहे हैं वह 100% सही है।

मामले में जहां 0 वैध मान है, is_set() का उपयोग करें।

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