On Fri, Oct 18, 2013 at 11:46 AM, Tim-Hinnerk Heuer <th.heuer@xxxxxxxxx> wrote: > Hi, > > I've been a PHP programmer for several years now and have a bit of a > love-hate relationship with it. It's great for doing something quickly, > especially web stuff, but recently I have heard people moaning about PHP a > lot and did some research and found this: > > http://webonastick.com/php.html > > One thing I had to get my head around is this: > The ternary operator > <?php > $foo = 1; > print(($foo == 1) ? "uno" : ($foo === 2) ? "dos" : "tres"); > print("\n"); > > outputs >>> dos > > because the operator is left-to-right associative instead of right-to-left > as in other languages. I was thinking there must be a reason for this. > Speed? Is it faster to evaluate/implement all operators as left-to-right? > > I noticed that the above could easily be fixed by saying: > > <?php > $foo = 1; > print(($foo == 1) ? "uno" : (($foo === 2) ? "dos" : "tres")); > print("\n"); > > outputs >>> uno > > Was this a deliberate design decision or is it a flaky implementation of > the ternary operator? > > Tim-Hinnerk Heuer > > Twitter: @geekdenz > Blog: http://www.thheuer.com Maybe it just me but I look at it the same as math, you don't add something up from right to left do you? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php