2010-03-19 5 views
12

मैं जो उन में से एक का उपयोग करने के कभी-कभी भ्रमित कर रहा हूँ,यदि कोई var सेट है या नहीं, तो परीक्षण के लिए मुझे किस फ़ंक्शन का उपयोग करना चाहिए?

कहते हैं कि मैं एक समारोह कभी कभी मेरे लिए स्पष्ट नहीं है कि getmember($id)

function getmember($id) 
{ 

// now this is the confusing part 
// how do i test if a $id was set or not set? 

//solution 1 
if(empty($id)) 
{ 
return false; 
} 


// solution 2 

if(isset($id)) 
{ 
return false; 
} 

} 

कहा जाता है, एक समारोह में एक पैरामीटर function($var="") की तरह सेट किया जाता है कभी कभी अगर

तो मैं कर

if($var ==="") 
{ 
return false; 
} 

मैं अगली बार क्या इस्तेमाल करना चाहिए 012,?

उत्तर

10

यहां आपको क्या काम करता है की एक पूरी टूटने और जब:

<? 
echo "<pre>"; 
$nullVariable = null; 

echo 'is_null($nullVariable) = ' . (is_null($nullVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'empty($nullVariable) = ' . (empty($nullVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'isset($nullVariable) = ' . (isset($nullVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo '(bool)$nullVariable = ' . ($nullVariable ? 'TRUE' : 'FALSE') . "\n\n"; 

$emptyString = ''; 

echo 'is_null($emptyString) = ' . (is_null($emptyString) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'empty($emptyString) = ' . (empty($emptyString) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'isset($emptyString) = ' . (isset($emptyString) ? 'TRUE' : 'FALSE') . "\n"; 
echo '(bool)$emptyString = ' . ($emptyString ? 'TRUE' : 'FALSE') . "\n\n"; 

//note that the only one that won't throw an error is isset() 
echo 'is_null($nonexistantVariable) = ' . (@is_null($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'empty($nonexistantVariable) = ' . (@empty($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo 'isset($nonexistantVariable) = ' . (isset($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n"; 
echo '(bool)$nonexistantVariable = ' . (@$nonexistantVariable ? 'TRUE' : 'FALSE') . "\n\n"; 
?> 

उत्पादन:

is_null($nullVariable) = TRUE 
empty($nullVariable) = TRUE 
isset($nullVariable) = FALSE 
(bool)$nullVariable = FALSE 

is_null($emptyString) = FALSE 
empty($emptyString) = TRUE 
isset($emptyString) = TRUE 
(bool)$emptyString = FALSE 

is_null($nonexistantVariable) = TRUE 
empty($nonexistantVariable) = TRUE 
isset($nonexistantVariable) = FALSE 
(bool)$nonexistantVariable = FALSE 

जब मैं (bool)$variable ऊपर दिखाने के लिए, कि आप इसे कैसे में इस्तेमाल कर सकते हैं है एक सशर्त उदाहरण के लिए, यदि किसी वैरिएबल शून्य या खाली है की जाँच करने के लिए, तुम कर सकते हो:

if (!$variable) 
    echo "variable is either null or empty!"; 

लेकिन यह क्योंकि यह एक छोटे से अधिक पठनीय है एक समारोह का उपयोग करने के लिए सबसे अच्छा है। लेकिन यह तुम्हारी पसंद है।

इसके अलावा, the PHP type comparison table देखें। यह मूल रूप से मैंने अभी ऊपर किया है, और भी छोड़कर।

+0

व्यापक और सटीक, +1 – dnagirl

+0

Yepp भी एक +1 मुझ से स्पष्टीकरण – streetparade

3

आप बस पता करने के लिए यदि किसी वैरिएबल परिभाषित किया गया है चाहते हैं, का उपयोग isset()

आप को देखने के लिए अगर यह शुरू कर दिया गया है चाहते हैं, is_null()

का उपयोग आप इसे कुछ और करने के लिए मूल्य है की तुलना करना चाहते हैं, तो का उपयोग ==

+0

के लिए धन्यवाद '' empty' is_null की तुलना में बेहतर() 'के रूप में कभी कभी चर की तरह एक शून्य लम्बाई तार के साथ initialised कर रहे हैं' $ x = ' ';' – Andy

+0

मुझे लगता है कि is_null value = null में सच है या इससे पहले सेट नहीं किया गया था? – streetparade

1

नहीं एक ही:

isset: निर्धारित करता है, तो एक चर सेट और शून्य नहीं है http://ch.php.net/manual/en/function.isset.php

खाली: निर्धारित करें कि एक चर खाली http://ch.php.net/manual/en/function.empty.php

$ एक === $ ख है कि क्या: सही है, तो $ एक $ ख के बराबर है, और वे एक ही प्रकार के कर रहे हैं। http://ch.php.net/manual/en/language.operators.comparison.php

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