Bug #54576 [Opn->Bgs]: or is différent of true
Edit report at http://bugs.php.net/bug.php?id=54576&edit=1
ID: 54576
Updated by: dtajchreber@php.net
Reported by: dungar at kabia dot fr
Summary: or is différent of true
-Status: Open
+Status: Bogus
Type: Bug
Package: Unknown/Other Function
Operating System: debian
PHP Version: 5.3.6
Block user comment: N
Private report: N
New Comment:
The ternary binds closer than the or operator. What you're actually
running is:
var_dump(false or (false ? 'true' : 'false'));
So here's a different view:
var_dump((bool)'false'); /* true */
var_dump(false or (false ? 'true' : 'false')); /* false or true */
var_dump(false or false ? 'true' : 'false'); /* true */
[1] http://php.net/manual/en/language.operators.precedence.php
[2] http://us2.php.net/manual/en/language.types.boolean.php
Previous Comments:
------------------------------------------------------------------------
[2011-04-20 16:02:00] dungar at kabia dot fr
Description:
------------
var_dump(false or false ? 'true' : 'false');
=> boolean true
Test script:
---------------
var_dump(false or false ? 'true' : 'false');
var_dump(false || false ? 'true' : 'false');
if ( false | false )
var_dump('true');
else
var_dump('false');
if ( false || false )
var_dump('true');
else
var_dump('false');
if ( false or false )
var_dump('true');
else
var_dump('false');
exit;
Expected result:
----------------
string 'false' (length=5)
string 'false' (length=5)
string 'false' (length=5)
string 'false' (length=5)
string 'false' (length=5)
Actual result:
--------------
boolean true
string 'false' (length=5)
string 'false' (length=5)
string 'false' (length=5)
string 'false' (length=5)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=54576&edit=1
Thread (2 messages)