2012-12-13 13 views
5

क्या कोई तरीका है कि मैं php में जावास्क्रिप्ट ढीला परिवर्तनीय हैंडलिंग की नकल कर सकता हूं? उदाहरण के लिए, php में मैंजावास्क्रिप्ट के बराबर एक php है a = b && b.c || डी

$instituteID = (isset($p['regInstituteName']) && isset($p['regInstituteName']['ID'])) ? $p['regInstituteName']['ID'] : null; 

जबकि जावास्क्रिप्ट में इस

instituteID = p.regInstituteName && p.regInstituteName.id || null; 

does not के लिए गाढ़ा होता बारे में एक अंतर की है कि बहुत की तरह लग करने के लिए है, लेकिन यह मूल रूप से

+0

ऐसा नहीं है। आपकी सबसे अच्छी शर्त आलसी या '||' को बदलने के लिए संघीय टर्नरी ऑपरेटर '?:' है। –

+0

मेरी व्यक्तिगत राय में सबसे अच्छा तरीका इस तरह के गैर तुच्छ अभिव्यक्तियों को कोड नहीं करना है। कृपया इन शुद्ध लोगों के बारे में सोचें जो भविष्य में आपके कोड को समझने की कोशिश करेंगे। –

+0

व्यक्तिगत रूप से मैं इसे इस तरह के फ़ंक्शन में समझाऊंगा जिसका उपयोग इस प्रकार किया जाता है: '$ institureId = ifDefined ($ p, 'regInstituteName.ID')' – Deestan

उत्तर

7

कहते हैं .. नहीं। अतीत में have been some proposals, लेकिन उन्हें अस्वीकार कर दिया गया है।

संपादित करें: यदि आप E_NOTICE त्रुटियों को फेंकने में खुश हैं तो आप इसे अनुकूलित कर सकते हैं। लेकिन मैं इसके खिलाफ सिफारिश करता हूं।

+0

संघनित टर्नरी के बारे में क्या? –

+0

इसे हल नहीं करता है। ओपी को 'जारीकर्ता()' पहले और 'जारीकर्ता ($ x) || के परिणाम की आवश्यकता है $ x' का परिणाम बुलियन होगा। – Evert

2

आपको अपने मामले के साथ केवल एक isset की आवश्यकता है।

क्योंकि $p['regInstituteName']['ID'] सेट है, तो $p['regInstituteName'] हमेशा सेट होता है।

$instituteID = isset($p['regInstituteName']['ID']) ? $p['regInstituteName']['ID'] : null; 
+0

उसे पता नहीं था। निश्चित सड़क लेने के लिए लगा, लेकिन इस संकेत के लिए धन्यवाद – lordvlad

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