मैं PHP और शून्य के बारे में एक अजीब सवाल है, तो कृपया निम्नलिखित कोड देखें:php शून्य या खाली है?
$a = '';
if($a == NULL) {
echo 'is null';
}
क्यों दिखाई देते हैं अशक्त है? अगर $a
खाली है !, क्या यह एक बग है? धन्यवाद।
मैं PHP और शून्य के बारे में एक अजीब सवाल है, तो कृपया निम्नलिखित कोड देखें:php शून्य या खाली है?
$a = '';
if($a == NULL) {
echo 'is null';
}
क्यों दिखाई देते हैं अशक्त है? अगर $a
खाली है !, क्या यह एक बग है? धन्यवाद।
क्या आप के लिए देख रहे हैं:
if($variable === NULL) {...}
पीएचपी व्यवहार करता है शून्य, झूठी, , और बराबर के रूप में खाली स्ट्रिंग।
यह एक बग नहीं बल्कि PHP सामान्य व्यवहार है। ऐसा इसलिए होता है क्योंकि PHP में ==
ऑपरेटर प्रकार की जांच नहीं करता है।
'' == null == 0 == false
आप भी चाहते हैं, तो मान ही प्रकार की जांच करने के लिए, ===
बजाय का उपयोग करें। इस अंतर को गहराई से अध्ययन करने के लिए, कृपया official documentation पढ़ें।
नहीं, यह कोई बग नहीं है। Loose comparisons with == table (दूसरी तालिका) पर एक नज़र है, जो अन्य स्तंभ में मान के साथ पहले कॉलम में प्रत्येक मान की तुलना का परिणाम से पता चलता है:
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
वहाँ आप देख सकते हैं कि एक खाली स्ट्रिंग ""
false
के साथ तुलना में , 0
, NULL
या ""
सच साबित होंगे।
आप इसके बजाय is_null
[docs] या सख्त तुलना (तीसरी तालिका) का उपयोग करना चाह सकते हैं।
लूज तुलना तालिका तालिका का सुझाव देती है कि 0 == "php" या "php" == 0 की तुलना दोनों सही साबित होगी। क्या चल रहा हैं उधर? – Robert
@Robert: स्ट्रिंग पर डालने पर अंकों के साथ शुरू होने वाली स्ट्रिंग को '0' में परिवर्तित नहीं किया जाता है: http://codepad.org/qi40SG3E। तो '(int)" php "== 0'। –
@ रॉबर्ट: मेरा मतलब था * "जब ** ** ** पर डाला गया" *। –
जांच ==
बनाम ===
'' == NULL
वापसी होगी सच
0 == NULL
सच वापसी होगी
false == null
वापसी होगी सच
जहां के रूप में
'' === NULL
झूठी वापसी होगी
0 === NULL
होगा अवास्तविक लौटाते
false === NULL
झूठी
वापसी होगी के रूप में निम्न तालिका में दिखाया गया है, empty($foo)
$foo==null
के बराबर है और is_null($foo)
$foo===null
का एक ही कार्य करता है। तालिका null
तुलना के संबंध में कुछ मुश्किल मान भी दिखाती है। (φ एक अनियमित चर को दर्शाता है।)
मैं कभी भी empty()
और is_null()
फ़ंक्शंस का उपयोग नहीं करता हूं। सरल तुलना का उपयोग कम अस्पष्ट, तेज और क्लीनर है।
empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
आप ==
उपयोग करते हैं, php कोई रिक्त स्ट्रिंग या null
के रूप में सरणी व्यवहार करता है। null
और empty
के बीच भेद बनाने के लिए, या तो ===
या is_null
का उपयोग करें। तो:
if($a === NULL)
या if(is_null($a))
यदि ($ a === NULL) – Caster
झूठी, अपनी हालत केवल अप्रारंभीकृत और अशक्त '' '$ variable''' मेल खाता है। आप जो चाहते हैं वह वास्तव में है: '' '$ variable == null''' (' '' == '' '' –
@ थॉमसलाइरेंट को नोट करें, ओपी क्या ढूंढ रहा था, वे सोच रहे थे कि क्यों '== शून्य 'खाली स्ट्रिंग से मेल खाता था और न केवल शून्य या अपरिभाषित। – Godwin
मेरी गलती ओप करता है, लेकिन आपकी आखिरी वाक्य ने मुझे लगता है कि नल, झूठी, 0 और "** सख्ती से ** बराबर हैं जो गलत है, गलतफहमी के लिए खेद है। –