कई भाषाओं 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
और 0
FALSE
माना जाता है।
आपकी अभिव्यक्ति अब पढ़ती है, 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.
पहला तुलनित्र अब आप जिस तुलना का उपयोग कर रहे हैं वह तुलना है। ध्यान दें कि यह पहले किए गए रूपांतरणों को करता है।
दूसरे तुलनित्र का उपयोग करके आपकी समस्या ठीक हो जाएगी। चूंकि एक शून्य और संख्या एक ही प्रकार के नहीं हैं, ===
तुलना ==
ऑपरेटर के रूप में प्रकार रूपांतरण करने के बजाय झूठी वापसी होगी।
उम्मीद है कि इससे मदद मिलती है।
$ myvariable जब तक एक नाव है, जिसमें मामले $ myvariable === floatval (0) – AndyClaw