2010-09-04 8 views
5

मैं कुछ कोड मैंने हाल ही में वेब पर पाया, और यह php वाक्य रचना में आए पढ़ाई कर रहा था:अजीब चर काम

<?php $framecharset && $frame['charset'] = $framecharset; ?> 

कोई व्याख्या कर सकते हैं क्या कोड की इस पंक्ति में चल रहा है? क्या वैरिएबल (ओं) को आवंटित किया जा रहा है, और & & ऑपरेटर का बयान के उस स्थान पर क्या उद्देश्य है?

धन्यवाद! पैट

उत्तर

3

आह, मैं तो बस एक ब्लॉग पोस्ट यह मुहावरा के बारे में जावास्क्रिप्ट में लिखा है:

http://www.mcphersonindustries.com/

मूल रूप से यह देखने के लिए कि $framecharset मौजूद परीक्षण है, और उसके बाद ही वह गैर है $frame['charset'] निर्दिष्ट करने के लिए कोशिश करता है -शून्य।

जिस तरह से यह काम करता है यह है कि दुभाषिया आलसी हैं। && कथन के दोनों पक्ष जारी रखने के लिए सत्य होने की आवश्यकता है। जब यह false मान का सामना करता है तो && के बाद, यह बंद हो जाता है। यह मूल्यांकन जारी नहीं रखता है (इसलिए इस मामले में असाइनमेंट नहीं होगा यदि $framecharsetfalse या null है)।

कुछ लोग && के बाद एक बुलियन अभिव्यक्ति का अधिक "महंगा" आधा भी डाल देंगे, ताकि यदि पहली स्थिति true नहीं है, तो महंगी बिट कभी संसाधित नहीं की जाएगी। यह तर्कसंगत है कि यह वास्तव में कितना बचा सकता है, लेकिन यह एक ही सिद्धांत का उपयोग करता है।

+0

आपका स्पष्टीकरण युक्त स्ट्रिंग वाली बहुत स्पष्ट है। धन्यवाद। – cube

+0

एलेक्स, सटीक जावास्क्रिप्ट समकक्ष वाक्यविन्यास कैसा दिखता है? – cube

+0

ओह, मैं इसे आपके ब्लॉग पर देखता हूं, धन्यवाद। – cube

2

&&PHP में शॉर्ट सर्किट जिसका मतलब है कि अगर LHSfalse होने के लिए मूल्यांकन करता है RHS मूल्यांकन नहीं किया जाएगा, क्योंकि परिणाम हमेशा false हो जाएगा है।

आपका कोड:

$framecharset && $frame['charset'] = $framecharset; 

के बराबर है:

if($framecharset) { 
    $frame['charset'] = $framecharset; 
} 

कौन सा सरणी के लिए मूल्य के रूप में $framecharset का मूल्य प्रदान करती है कुंजी charset केवल तभी मूल्य true और PHP

में होना का मूल्यांकन करता है

सभी तार दो को छोड़कर सत्य हैं: एक स्ट्रिंग सभी पर कुछ भी नहीं है और केवल चरित्र 0

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