|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-04-16 16:14 UTC] dwilson at cae dot wisc dot 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.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 19:00:02 2025 UTC |
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