2012-12-13 18 views
5

c'è un modo in cui posso simulare javascripts gestione della variabile allentata in PHP? per esempio, in php devo scrivereesiste un equivalente PHP per javascripts a = b && b.c || d

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

mentre in javascript questo sarebbe condensare al

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

pretende molto sembrare che molto di una differenza, ma si aggiunge

+0

Non c'è. La soluzione migliore è l'operatore ternario condensato '?:' Per sostituire il pigro OR '||'. –

+0

Secondo la mia personale opinione, il modo migliore è non codificare espressioni non banali. Per favore, pensa a questi ragazzi puri che cercheranno di capire il tuo codice in futuro. –

+0

Personalmente lo astraggo in una funzione che viene utilizzata in questo modo: '$ institureId = ifDefined ($ p, 'regInstituteName.ID')' – Deestan

risposta

7

Fondamentalmente .. no. C'è have been some proposals in passato, ma sono stati respinti.

Modifica: è possibile ottimizzarlo nel caso in cui si siano felici di lanciare errori E_NOTICE. Ma io raccomanderei contro questo.

+0

Che dire del ternario condensato? –

+0

Non lo risolve. OP ha bisogno di fare prima un 'isset(), e il risultato di' isset ($ x) || $ x' genererà un valore booleano. – Evert

2

Hai solo bisogno di uno isset con il tuo caso.

Perché se è impostato $p['regInstituteName']['ID'], allora $p['regInstituteName'] è sempre impostato.

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

non lo sapeva. pensato di prendere la strada sicura, ma grazie per questo suggerimento – lordvlad

Problemi correlati