2010-04-21 26 views
7

अभिव्यक्तियों के बीच उन PHP के बीच क्या अंतर है !?अभिव्यक्तियों के बीच उन PHP के बीच क्या अंतर है?

if ($var !== false) 
{ 
    // Do something! 
} 


if (false !== $var) 
{ 
    // Do something! 
} 

ज़ेंड फ्रेमवर्क जैसे कुछ ढांचे नवीनतम रूप का उपयोग करते हैं, जबकि परंपरागत पहला है।

अग्रिम धन्यवाद

उत्तर

10

अभिव्यक्ति का नतीजा वही है, हालांकि यह तुलना करने के बजाए असाइन करने से स्वयं को सुरक्षित रखने का एक अच्छा तरीका है (उदाहरण के लिए अगर ($ var == false) की बजाय ($ var = false) लिखना, क्योंकि आप ' "झूठी" कीवर्ड में मूल्य $ var असाइन करें)

0

कोई वास्तविक अंतर नहीं है। ऑपरेंड सिर्फ अलग-अलग पक्षों पर हैं लेकिन फिर भी तुलना समान है।

1

दो अभिव्यक्ति अर्थात् समान हैं। यह वरीयता का मामला है कि निरंतर अभिव्यक्ति को पहले या आखिरी अभिव्यक्ति करना है या नहीं।

0

कोई फर्क नहीं पड़ता। !== टाइपिंग के साथ 2 भावों की तुलना करता है, और यदि वे बराबर नहीं हैं तो सत्य लौटाते हैं। अंतर अभिव्यक्ति के मूल्यांकन क्रम में हो सकता है, लेकिन यदि आपने लिखा है, तो कोई अंतर नहीं है (और एक अच्छा कार्यक्रम ऐसे अभिव्यक्तियों के निष्पादन आदेश पर भरोसा नहीं करना चाहिए)।

0

इस परिदृश्य पर विचार करें:

if (strpos($string, $substring)) { /* found it! */ } 

हैं $substring$string का सही शुरू में पाया जाता है, मान है, तो अंदर, इस false को मूल्यांकन करता है, 0. दुर्भाग्य है, इसलिए सशर्त निष्पादित नहीं किया गया है ।

सही तरीका को संभालने के लिए है कि हो जाएगा:

if (false !== strpos($string, $substring)) { /* found it! */ } 

निष्कर्ष:

false हमेशा गलत होने की गारंटी है। अन्य मूल्य इसकी गारंटी नहीं दे सकते हैं। उदाहरण के लिए, PHP 3, empty('0') में true था, लेकिन यह बाद में false पर बदल गया।

+0

वोट क्यों नीचे ????? – Sarfraz

+0

मैंने आपको कम नहीं किया, लेकिन आपने सवाल का जवाब नहीं दिया। ओपी 'if ($ var) '/' (func()) 'और' अगर ($ अपेक्षित वैल्यू === $ var) '/' के बीच अंतर नहीं पूछ रहा है ($ अपेक्षित वैल्यू === func()) ', लेकिन अगर कथन सशर्त में चर से पहले स्थिरांक सूचीबद्ध करना बेहतर विचार क्यों होगा। – pinkgothic

2

यह वास्तव में एक वरीयता है। आप इसे किसी भी तरह, एक == ख या ख डाल सकता है == एक है, लेकिन यह एक गलती करते हैं, अगर आप

if ($var == false) 

करना आसान है क्योंकि अगर आप गलती से एक = पत्र के साथ यह टाइप करें, हालत हमेशा समान होगा सच (क्योंकि $ var सफलतापूर्वक सेट हो जाएगा), लेकिन

if (false == $var) 

यदि आप अब = डालते हैं, तो आपको एक त्रुटि मिलेगी।

+0

नाइटपिक: "क्योंकि यदि आप गलती से इसे एक = अक्षर के साथ टाइप करते हैं, तो स्थिति हमेशा सत्य के बराबर होगी" - यह सच नहीं है। 'अगर ($ var = false)' 'var var = false जैसा ही है; अगर ($ var) '। Ergo, यह हमेशा झूठी का मूल्यांकन करेगा। – pinkgothic

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