मैं सोच रहा था कि नीचे दो मामलों में क्या अंतर है, और किसकी सिफारिश की जाती है?
$val = 0;
if (!$val) {
//True
}
if (empty($val) {
//It's also True
}
मैं सोच रहा था कि नीचे दो मामलों में क्या अंतर है, और किसकी सिफारिश की जाती है?
$val = 0;
if (!$val) {
//True
}
if (empty($val) {
//It's also True
}
PHP type comparison table पर एक नज़र डालें।
यदि आप तालिका की जांच करते हैं, तो आप देखेंगे कि सभी मामलों के लिए, empty($x)
!$x
जैसा ही है। तो यह अनियंत्रित चर को संभालने के लिए नीचे आता है। !$x
एक E_NOTICE
बनाता है, जबकि empty($x)
नहीं करता है।
यदि आप खाली उपयोग करते हैं और चर सेट कभी नहीं बनाया गया था, तो कोई चेतावनी/त्रुटि नहीं फेंक दी जाएगी।
चलो देखते हैं:
""
(कोई रिक्त स्ट्रिंग)0
(एक पूर्णांक के रूप में 0
)निम्नलिखित बातें
empty
माना जाता है0.0
(0
एक नाव के रूप में)"0"
(0
स्ट्रिंग के रूप)NULL
FALSE
array()
(एक खाली सरणी)var $var;
(एक चर घोषित है, लेकिन एक में एक मूल्य के बिना कक्षा)
जब बूलियन को बदलने, निम्न मान
FALSE
माना जाता है:
- बूलियन
FALSE
ही- पूर्णांक
0
(शून्य)- नाव
0.0
(शून्य)- खाली स्ट्रिंग, और स्ट्रिंग
"0"
- शून्य तत्वों
- शून्य सदस्य चर के साथ एक वस्तु के साथ एक सरणी (PHP 4 केवल)
- रिक्त टैग्स से बनाए गए विशेष प्रकार
NULL
(सेट नहीं चर सहित)SimpleXML
वस्तुओं
ऐसा लगता है कि एकमात्र अंतर (परिणामी मूल्य के संबंध में) यह है कि कैसे SimpleXML
उदाहरण संभाला जाता है।बाकी सब कुछ एक ही परिणाम देने लगता है (यदि आप निश्चित रूप से बुलियन कास्ट उलटा करते हैं)।
तो निष्कर्ष क्या है? सूची से, बूलियन अधिक मजबूत जांच की तरह लगता है ... –
यह गलत है। पीएचपी खोल पर एक त्वरित परीक्षण से पता चलता है कि 'खाली 'खाली' SimpleXMLElement' उदाहरणों को खाली करता है जैसे '!' करता है; यह केवल 'खाली' दस्तावेज में एक त्रुटि है जिसका उल्लेख नहीं किया गया है। –
+1। यह भी ध्यान रखें कि यह '! = [$ वैल्यू का मूल्यांकन करने का बूलियन परिणाम] जैसा है, इसलिए पहली तालिका का अंतिम स्तंभ अधिकतर आपको देखना चाहिए। – rockerest
+1 तुलना तालिका पर अच्छा लगता है। –
धन्यवाद, यही मुझे जानने की जरूरत है। तो मुझे लगता है कि खाली ($ x) सुरक्षित दृष्टिकोण है। मुझे लगता है कि अंतर नगण्य प्रदर्शन के रूप में सही है? – Bachx