Bug #10351 Updated: Parsing problem with nested ? : structures
| From: | dwilson at cae dot wisc dot edu | Date: | Mon, 29 Apr 2002 14:34:57 +0000 |
| Subject: | Bug #10351 Updated: Parsing problem with nested ? : structures | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-6459@lists.php.net to get a copy of this message | ||
ID: 10351
Updated by: dwilson@cae.wisc.edu
Reported By: dwilson@cae.wisc.edu
Status: Closed
Bug Type: Feature/Change Request
Operating System: Sun OS 5.7
PHP Version: 4.0.3pl1
New Comment:
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
Previous Comments:
------------------------------------------------------------------------
[2002-04-27 15:19:22] jimw@php.net
it does execute correctly, given the relative precedence of the '<' and
'?:' operators.
------------------------------------------------------------------------
[2001-04-16 16:14:48] dwilson@cae.wisc.edu
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