ID: 12566
Updated by: jeroen
Reported By: [EMAIL PROTECTED]
Status: Open
Bug Type: *Programming Data Structures
Operating System: Linux
PHP Version: 4.0.6
New Comment:

Confirmed in latest CVS:

---
echo TRUE ? 'one' : TRUE ? 'two' : 'unknown';
=> two
---
echo TRUE ? 'one' : FALSE ? 'two' : 'unknown';
=> two
---
This definitely is a bug, and IMO a serious one. A parse error would be acceptable IMO 
(then use ( and )), but this isn't.

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

[2001-08-04 15:33:28] [EMAIL PROTECTED]

The following emits 'two' rather than 'one' as one would expect.

$a = 1; $b = 2;

echo (($a == 1) ? 'one' : 
      ($b == 2) ? 'two' :
      'unknown');

Apologies if for PHP this unusual behaviour actually is as expected, but being 
counter-intuituve, and of course inconsistent from other languages with a ?: operator, 
this is an undesirable result.

In 'C', the following of course outputs 'one'

#include <stdio.h>

int main()
{
  int a = 1, b = 2;

  puts((a == 1) ? "one" : 
       (b == 2) ? "two" :
       "unknown");

  return 0;
}


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



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


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to