2010-12-03 12 views
16

चलो कहते हैं कि मैं इस तरह कुछ है करते हैं:पीएचपी अगर (हालत) निष्पादन

if(1 == 0 && do_stuff()) { 
    ... 
} 

जाहिर है 1 0 नहीं है, इसलिए अन्य स्थिति की जांच करने के लिए कोई मतलब नहीं है। तो क्या PHP कभी भी do_stuff() चलाता है?

+1

में दूसरी शर्त चलाने आप हमेशा "do_stuf" निष्पादित किया जाना चाहते हैं गलत है, आप निश्चित रूप से उस में पहली शर्त के रूप में हो सकता था अगर। विवरण के लिए मेरा जवाब देखें। –

उत्तर

35

नहीं - PHP आलसी मूल्यांकन (कभी-कभी शॉर्ट सर्किट मूल्यांकन कहा जाता है) का उपयोग करता है, इसलिए यदि तार्किक और पहली झूठी स्थिति में पहली स्थिति है, तो यह किसी भी अन्य शर्तों का मूल्यांकन करने का प्रयास नहीं करेगी।

इसी तरह, यदि आप एक OR कर रहे थे और पहली शर्त सच थी तो यह दूसरे का मूल्यांकन नहीं करेगा।

+11

यही कारण है कि आपको दाएं – Gordon

+2

पर महंगा परीक्षण करना चाहिए, कई मामलों में आप चर के खिलाफ परीक्षण करते हैं, इसलिए परीक्षणों की लागत कमजोर होती है। या आपके पास एक परीक्षण है, जो "कभी नहीं" विफल होगा (जैसे उत्पादन में '$ डीबग ')। फिर एक और तरीका परीक्षण को रखना है, जो बाईं ओर असफल हो सकता है। – KingCrunch

+1

यह निश्चित रूप से PHP के बारे में सच है। वैसे भी, जावास्क्रिप्ट में एक ही कार्यक्षमता के संबंध में एक अंतर को ध्यान में रखना महत्वपूर्ण है। PHP में परिणाम हमेशा एक बूलियन मान होता है, जबकि जावास्क्रिप्ट में यह अंतिम मूल्यांकन उप अभिव्यक्ति का मूल्य है। – Ando

1

नहीं, यह इस स्थिति में do_stuff() निष्पादित नहीं करेगा।

4

तो पहली शर्त तो php कभी नहीं & & ऑपरेटर

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