2013-11-27 16 views
16

Qual è il miglior modo, preferito di scrivere se stenografia one-liner come ad esempio: torsionePHP se stenografia ed eco in una riga - possibile?

expression ? $foo : $bar 

Trama: Ho bisogno di echo $foo o echo $bar. Qualche trucco pazzesco? :)

+1

* Ternario dichiarazione *, non * stenografia se *. Qual è la domanda attuale qui? – Phil

+1

espressione echo? $ pippo: $ bar; –

+1

@Phil: * Espressione condizionale *, non * istruzione ternaria *. :) Se fosse una dichiarazione, 'echo' funzionerebbe nei rami. E l'unica ragione per cui puoi scappare chiamandolo ternario è che al momento c'è solo un operatore ternario. "Ternario" che significa avere a che fare con tre, anche se ... non è un nome molto utile. :) – cHao

risposta

34
<?=(expression) ? $foo : $bar?> 

modifica: here's a good read for you on the topic

modifica: more to read

+2

Le parentesi sono ridondanti – Phil

+0

Lei signore, ha ragione. Sono davvero, tipo ridondanti, qui. Ma tieni presente che a volte l'espressione può essere complessa, quindi le parentesi in più. – Dave

+0

Non ho mai visto PHP non riuscire a valutare l'espressione condizionale, non importa quanto sia complessa, senza una coppia di parentesi wrapping – Phil

7

espressione echo? $ pippo: $ bar;

2

La ternary operator restituisce il valore della seconda espressione se il primo restituisce TRUE, e restituisce il terzo espressione se il primo dà come risultato FALSE. A echo un valore o l'altro, basta passare l'espressione ternaria alla dichiarazione echo.

echo expression ? $foo : $bar; 

Per saperne di più l'operatore ternario nel manuale di PHP per maggiori dettagli: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary