ID:               10351
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Closed
+Status:           Open
 Bug Type:         Feature/Change Request
 Operating System: Sun OS 5.7
 PHP Version:      4.0.3pl1
 New Comment:

See comment starting with "I checked...".


Previous Comments:
------------------------------------------------------------------------

[2002-04-29 10:34:57] [EMAIL PROTECTED]

I checked, and < has a higher precedence than ?: as one
would expect.  For example, with $dHour = 5, this is
equivalent to:

$departmeals = 1 ? 1 ? "3" : "2" : 1 ? "1" : "0";

which should evaluate to "3" but evaluates to "1" instead.

The C language has no trouble with this construction:

sun-66% cat temp.c
#include <stdio.h>
main(){
    printf("%s\n",1 ? 1 ? "3" : "2" : 1 ? "1" : "0");
}
sun-66% cc temp.c
sun-66% a.out
3

------------------------------------------------------------------------

[2002-04-27 15:19:22] [EMAIL PROTECTED]

it does execute correctly, given the relative precedence of the '<' and
'?:' operators.

------------------------------------------------------------------------

[2001-04-16 16:14:48] [EMAIL PROTECTED]

The following statement does not execute correctly:

             $departmeals = $dHour < 10.5 ? $dHour < 6.0 ? "3" : "2" 
:
               $dHour < 18.0 ? "1" : "0";

No error message--it just returns the wrong result.  It does execute
correctly if parentheses are added:

             $departmeals = $dHour < 10.5 ? ($dHour < 6.0 ? "3" : "2")
:
               ($dHour < 18.0 ? "1" : "0");

The original is not ambiguous; it should parse and execute correctly.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=10351&edit=1

Reply via email to