2009-08-23 3 views
41

Ciao, voglio solo sapere perché questo codice produce (almeno per me) un risultato errato.L'operatore ternario e la concatenazione delle stringhe sono inusuali?

Beh, probabilmente io sono in colpa qui

$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other'; 

stavo indovinando che se PaperType è uguale a 'James Bond' allora descrizione è 'Paper: James Bond' e se PaperType non è uguale a 'James Bond' allora Descrizione è "Carta: altro".

Ma quando ho eseguito questo codice i risultati sono descrizione è o 'James Bond' o 'Altro' e mi lasciato chiedendo dove la stringa 'Paper:' andato ???

risposta

76
$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other'); 

Provare ad aggiungere parentesi in modo che la stringa sia concatenata a una stringa nell'ordine corretto.

+0

Sì, funziona, quindi è un problema di precedenza operatore nel mio codice, mannaggia a me; ~) – Cesar

+1

ma io in realtà non completamente capisce che cosa sta accadendo ... – Cesar

+1

' Paper: 'viene applicato per la prima volta a un booleano (il risultato di $ paperType ==' bond '), in altre parole il codice non sta accadendo nel giusto ordine. –

8

È correlato alla precedenza dell'operatore. È necessario effettuare le seguenti operazioni:

$description = 'Paper: ' . (($paperType == 'bond') ? 'Bond' : 'Other');