Posted by Tim Streater on 12/06/07 17:14
In article <fj98nq$h5h$1@ss408.t-com.hr>, newbie <newbie@newbie.newbie>
wrote:
> Janwillem Borleffs wrote:
> > ...newbie schreef:
>
> Thank you for your reply, but I believe you're mistaken.
>
> According to your code, for the $x = 40 I should receive output "x > 30"
> (according to the first if clause in your code). But, actually I
> receive the unexpected output of "20 < x <= 30".
>
>
> C code outputs "x > 30":
> int x = 40;
> printf("%s", x > 30 ? "x > 30" : x > 20 ? "20 < x <= 30" : "x < 20");
>
> JavaScript code outputs "x > 30":
> x = 40;
> document.write(x > 30 ? "x > 30" : x > 20 ? "20 < x <= 30" : "x < 20");
>
> PHP code outputs "20 < x <= 30":
> $x = 40;
> echo $x > 30 ? "x > 30" : $x > 20 ? "20 < x <= 30" : "x < 20";
>
>
>
> In the meanwhile I Googled for the explanation and it appears that PHP
> example is evaluated as follows:
> echo ($x > 30 ? "x > 30" : $x > 20) ? "20 < x <= 30" : "x < 20";
>
>
> I tried to transform ?: to if clauses and this is what I get:
> if ($x > 30) $foo = "x > 30";
> else $foo = "x > 20";
> if ($foo) echo "20 < x <= 30";
> else echo "x < 20";
>
> This explains why I get the (for me unexpected) result "20 < x <= 30".
>
> This is no a real-world example. I'm just courious why PHP acts
> different from some other languages.
Presumably you checked at:
http://www.php.net/manual/en/
??
[Back to original message]
|