Sono abbastanza in grado di utilizzare l'operatore ternario PHP. Tuttavia, ho trovato un ostacolo nel tentativo di capire perché il codice sottostante non corrisponde alla struttura equivalente if else. Il test è stato eseguito tre volte su numeri diversi. L'output per ogni struttura è inferiore al codice.Problema ternario php nidificato: output ternario! = If - else
ternario:
$decimal_places = ($max <= 1) ? 2 : ($max > 3) ? 0 : 1;
uscita ternario:
max: -100.000 decimali: 0
max: 0.48 decimali: 0
max: 0.15 decimali: 0
if-else
if($max <= 1)
$decimal_places = 2;
elseif($max > 3)
$decimal_places = 0;
else
$decimal_places = 1;
if-else uscita:
max: decimale -100.000: 2
max: 0,48 decimali: 2
max: 0.15 decimali: 2
Qualcuno può dirmi per favore perché questi due controlli le strutture non producono gli stessi dati?
Una ragione per cui non è una buona idea nidificare gli operatori ternari –
Non sono equivalenti esatti, lo sai. L'intero resto andrà in cortocircuito nella struttura ternaria. Inoltre non sono pensati per essere annidati. –
[dal manuale PHP sugli operatori ternari] (http://de3.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary): Si consiglia di evitare "l'impilamento" "espressioni ternarie. Il comportamento di PHP quando si utilizza più di un operatore ternario all'interno di una singola istruzione non è ovvio – Gordon