C'est débile comme exemple, qui irait écrire des ternaires chainées comme ça...
Bref, après l'associativité à gauche de la ternaire en PHP est une belle connerie c'est un fait, tu devrais pas trouver ça normal que ça affiche "horse", vu que $arg vaut T intuitivement l'expression devrait retourner train.
Le truc c'est que PHP "parenthèse" l'expression comme ça :
(
(
(
(
( $arg == 'B' ) ? 'bus' : ( $arg == 'A' )
) ? 'airplane' : ( $arg == 'T' )
) ? 'train' : ( $arg == 'C' )
) ? 'car' : ( $arg == 'H' )
) ? 'horse' : 'feet'
Je te laisse remplacer les expressions par les valeurs booléennes correspondantes, tu comprendras ce qui se passe.
Avec la plupart des autres langages issus du C, l'expression aurait été parenthésée comme ça :
( $arg == 'B' ) ? 'bus' : (
( $arg == 'A' ) ? 'airplane' : (
( $arg == 'T' ) ? 'train' : (
( $arg == 'C' ) ? 'car' : (
( $arg == 'H' ) ? 'horse' : 'feet'
)
)
)
)
Ce qui est un comportement bien plus intuitif.
A lire quand même, car dans l'article "A Fractal of Bad Design" tout n'est pas à prendre pour argent comptant : http://forums.devshed.com/php-development-5/php-fractal-bad-design-hardly-929746.html