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

 ID:                 54576
 Updated by:         dtajchre...@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

Reply via email to