Re: A serious bug? "or" operator gives out diffferent results depending on order of operands

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I think what Jose is trying to say, is that because 'or' has a lower
precidence than =, you are interpreting the expression wrong.

$b1 = is_null($x) or ($y > 5);

is the same as 
($b1 = is_null($x)) or ($y > 5)
This assigns the value of is_null($x) to $b1, regardless of the result
of ($y > 5). It's shorthand for

if( !($b1 = is_null($x)) ){
    ($y > 5);
} 

similarly 

$b2 = ($y > 5) or is_null($x);

assigns $b2 to ($y > 5), or in this case true(since $y == 10). If ($y
> 5) returned false, ie if $i <= 5, then it would call the function
is_null($x). In this case calling the function is_null() is pointless,
since you aren't using the result.

What I think you are looking for is either
$b2 = (($y > 5) or is_null($x)); // whole thing right of = enclosed in brackets

or 

$b2 = ($y > 5) || is_null($x); // '||' has higher precidence than 'or'



On Fri, 24 Dec 2004 16:47:42 -0300, Jose M.Herrera
<jherrera@xxxxxxxxxxxx> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Bogdan Ribic wrote:
> | Here's a little test script:
> |
> | --------------------
> | $x = 2;
> | $y = 10;
> |
> | $b1 = is_null($x) or ($y > 5);
> | $b2 = ($y > 5) or is_null($x);
> 
> Yes, of course.
> Your code or example, is just like:
> 
> ( $b1 = is_null($x) )  or ( $y > 5  ) ;
> ( $b2 =  ($y > 5)   )  or  is_null($x) ;
> 
> The ">" has more precedence than "=", "or" it has a very low precedence.
> Then, $b1 = false and $b2 = True... that's ok! :P
> 
> You example, must have been:
> 
> $b1 = (   ( is_null($x) )  or ( $y > 5      ) );
> $b2 = (   ( $y > 5      )  or ( is_null($x) ) );
> 
> I this example the value of $b1 is all between the parenthesis (explicitly).
> 
> Bye!
> 
> - --
> Jose Miguel Herrera M.  -  User #246070 counter.li.org
> Est.Ing.Civil Informatica - UTFSM
> Valparaiso, Chile -  http://www.inf.utfsm.cl/~jherrera
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.4 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
> 
> iD8DBQFBzHJdl/j2VHFHn8wRArZdAKCJbv8W54vlpeinK1hMF3xEttjuiACeIIUs
> 63OX2bn+h9zLUDHhSvSTr/M=
> =3vfi
> -----END PGP SIGNATURE-----
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux