2009-11-23 13 views
39

PHP में, ($myvariable==0) जब $ myvariable शून्य है, अभिव्यक्ति का मान सत्य है; जब $ myvariable शून्य है, इस अभिव्यक्ति का मूल्य भी सच है। मैं दूसरे मामले को कैसे बाहर कर सकता हूं? मेरा मतलब है कि मैं अभिव्यक्ति केवल तभी सच होना चाहता हूं जब $ myvariable शून्य हो। बेशक मैंPHP मानता है शून्य शून्य के बराबर है

($myvariable!=null && $myvariable==0) 

लिख सकता हूं लेकिन ऐसा करने के लिए कोई और शानदार तरीका है?

उत्तर

67
$myvariable === 0 

पढ़ comparison operators अधिक के बारे में कर रहे हैं।

+1

$ myvariable जब तक एक नाव है, जिसमें मामले $ myvariable === floatval (0) – AndyClaw

0
$myvariable===0 


$a === $b 

समान सही $ एक $ ख के बराबर है, और वे एक ही प्रकार

0

एक is_null समारोह नहीं है, लेकिन यह सिर्फ अपने $myvariable!=null

1

दूसरा समाधान या तो काम नहीं होगा की जगह लेगा। === operator आपकी समस्या का समाधान है।

3

($myvariable === 0) आज़माएं जो टाइप जबरन प्रदर्शन नहीं करेगा।

+6

है: पी अनुमान मैं नहीं पश्चिम में सबसे तेजी से बंदूक है ... – Skilldrick

4

=== ऑपरेटर के साथ php फ़ंक्शन is_null() फ़ंक्शन का उपयोग करें। !== आपके द्वारा अपेक्षित तरीके से काम करता है।

9

आप एक गहरे प्रश्न पर संकेत देते हैं: अभिव्यक्ति कब सच होनी चाहिए?

नीचे, मैं कारण है कि यह कैसे तय करने के लिए तुम क्या कर रहे काम नहीं कर रहा और की व्याख्या करेगा।

कई भाषाओं null, 0 में, और रिक्त स्ट्रिंग ("") सभी गलत पर मूल्यांकन, इस if बयान काफी संक्षिप्त और सहज बना सकते हैं, लेकिन null, 0, और "" भी विभिन्न प्रकार के सभी कर रहे हैं। उनकी तुलना कैसे की जानी चाहिए?

This page हमें बताता है कि अगर हम तुलना की जा रही दो चर है, तो चर इस प्रकार बदल दिया जाता है (पहले मैच में मेज बाहर निकलने)

Type of First Type of Second Then 
null/string string   Convert NULL to "", numerical/lexical comparison 
bool/null  anything   Convert to bool, FALSE < TRUE 

तो तुम एक संख्या बनाम एक अशक्त तुलना कर रहे हैं। इसलिए, शून्य और संख्या दोनों को बुलियन में परिवर्तित कर दिया जाता है। This page हमें बताता है कि इस तरह के रूपांतरण में null और 0FALSE माना जाता है।

आपकी अभिव्यक्ति अब पढ़ती है, false==false, जो, ज़ाहिर है, सच है।

लेकिन आप जो चाहते हैं उसे नहीं।

This page PHP के तुलना ऑपरेटर की एक सूची प्रदान करता है।

Example Name    Result 
$a == $b Equal    TRUE if $a equals $b after type juggling. 
$a === $b Identical   TRUE if $a equals $b, AND they are of the same type. 
$a != $b Not equal   TRUE if $a not equals $b after type juggling. 
$a <> $b Not equal   TRUE if $a not equals $b after type juggling. 
$a !== $b Not identical  TRUE if $a not equals $b, or they are not of the same type. 
$a < $b Less than   TRUE if $a is strictly less than $b. 
$a > $b Greater than  TRUE if $a is strictly greater than $b. 
$a <= $b Less than/equal TRUE if $a is less than or equal to $b. 
$a >= $b Greater than/equal TRUE if $a is greater than or equal to $b. 

पहला तुलनित्र अब आप जिस तुलना का उपयोग कर रहे हैं वह तुलना है। ध्यान दें कि यह पहले किए गए रूपांतरणों को करता है।

दूसरे तुलनित्र का उपयोग करके आपकी समस्या ठीक हो जाएगी। चूंकि एक शून्य और संख्या एक ही प्रकार के नहीं हैं, === तुलना == ऑपरेटर के रूप में प्रकार रूपांतरण करने के बजाय झूठी वापसी होगी।

उम्मीद है कि इससे मदद मिलती है।

0

अपने शून्य एक स्ट्रिंग हो सकता है, तो आप भी considere "शून्य स्ट्रिंग"

($myvariable === 0 || $myvariable === '0') 
5

पहचान करने के लिए जाँच करना चाहिए के रूप में शून्य या शून्य से:

  • is_int($var) यदि किसी वैरिएबल एक है संख्या या एक संख्यात्मक स्ट्रिंग। शून्य की पहचान करने के लिए, उपयोग is_numeric($var) भी समाधान या $var === 0

  • is_null($var) का उपयोग करता है, तो एक चर शून्य

-1

मेरे मामले के लिए है मैं इस soulution पाया है और यह मेरे लिए काम करता है:

if ($myvariable == NULL) { 
    codehere... 
} 
0

मुझे अपनी परियोजनाओं में से एक में एक समान समस्या का सामना करना पड़ा, जिसमें मामूली अंतर था कि मैं शून्य की कीमतों का उपयोग भी कर रहा था, मेरी स्थिति के लिए मान्य मूल्य के रूप में। शून्य और अन्य मानों से NULL को अलग करने के लिए मैंने सरल तर्क का उपयोग करके इसे हल किया है।

if (gettype($company_id) === 'NULL') { 
     $company = Company::where('id', Auth::user()->company_id)->first(); 
    } else { 
     $company = Company::where('id', $company_id)->first(); 
    } 
संबंधित मुद्दे