I agree, it's not a bug, just a different design or interpretation of the statement. I further agree that the programmer should put parentheses around statements if visually ambiguous. Also, from left to right seems more logical. That it happens in this particular case that the result seems counter-intuitive doesn't mean it is illogical. I just had trouble understanding at first why it would output 'two' instead of 'one' when the contents of the variable clearly was 1. A different construct could be used better used in a case where a variable can have more than 2 values. elseif or even a switch, though more verbose, is probably much more readable. Sorry, Robert, for the huge font. I was sure I had reduced it before sending in gmail... Copy/paste from the website made it that big. I raised the issue also to get a better understanding what other php programmers think and I much better understand some things now. Tim-Hinnerk Heuer Twitter: @geekdenz Blog: http://www.thheuer.com On 19 October 2013 08:20, David Harkness <david.h@xxxxxxxxxxxxxxxxx> wrote: > On Fri, Oct 18, 2013 at 12:02 PM, Jim Giner <jim.giner@xxxxxxxxxxxxxxxxxx > >wrote: > > > That said I see the 'proper' expectation of this statement: > > > > $foo = $a ? $b : $c ? $d : $e; > > > > as: > > > > $foo will be the result of "if $a then $b else if $c then $d else $e;" > > > > Why php interprets it differently is just not logical to me. > > > While I agree that PHP probably should have matched other languages like C > and Java, a) I have never needed to use this double construct, b) I > wouldn't even if it made sense due to the likely confusion, and c) PHP has > the Elvis operator ($x ?: $y) which is pure awesomeness so I can forgive > it's wonky ternary precedence. > > Far more troublesome with PHP is the mixed parameter ordering in the > built-in functions. The quote on the top of that page says it all. I'm > constantly having to rely on code-completion for functions I've used for > years to make sure I'm getting the order right. Haystack before needle or > needle before haystack? Both! :( > > Cheers, > David >