2013/1/3 Marc Guay <marc.g...@gmail.com>:
> I received the message below addressed only to me, but I believe the
> group could benefit.  It looks like the single pipe is a bitwise
> operator so you will get an integer as a result (and probably other
> weird things to discover when using it on non-numbers).
>
> http://php.net/manual/en/language.operators.bitwise.php
>
>
> ---------- Forwarded message ----------
> From: Volmar Machado <qi.vol...@gmail.com>
> Date: 3 January 2013 12:42
> Subject: Re: [PHP] Boolean type forced on string assignment inside if 
> statement
> To: Marc Guay <marc.g...@gmail.com>
>
>
> My results in a simple test:
>
> <?php
>  $a = true;
>  $b = false; // either null, or 0
>  echo ('($a | $b))' . ($a | $b) . '<br>'); //1
>  echo ('($a || $b))' . ($a || $b) . '<br>'); //1
>  echo ('($b | $a)' . ($b | $a) . '<br>'); //1
>  echo ('($b || $a)' . ($b || $a) . '<br>'); //1
>  echo ('($a | $a)'. ($a | $a) . '<br>'); //1
>  echo ('($a || $a)' . ($a || $a) . '<br>'); //1
>  echo ('($b | $b)' . ($b | $b) . '<br>'); //0
>  echo ('($b || $b)' . ($b || $b) . '<br>'); //false(outputs nothing)
> ?>

The basic difference for another test, where conditions are both true are :

<?php
 $a = 4;
 $b = 3;
 echo ('($a | $b))' . ($a | $b) . '<br>'); //7
 echo ('($a || $b))' . ($a || $b) . '<br>'); //1
 echo ('($b | $a)' . ($b | $a) . '<br>'); //7
 echo ('($b || $a)' . ($b || $a) . '<br>'); //1
 echo ('($a | $a)'. ($a | $a) . '<br>'); //4
 echo ('($a || $a)' . ($a || $a) . '<br>'); //1
 echo ('($b | $b)' . ($b | $b) . '<br>'); //3
 echo ('($b || $b)' . ($b || $b) . '<br>'); //1

 echo ('($a & $b))' . ($a & $b) . '<br>'); //0
<-------------------------------------------
 echo ('($a && $b))' . ($a && $b) . '<br>'); //1
 echo ('($b & $a)' . ($b & $a) . '<br>'); //0
<-------------------------------------------
 echo ('($b && $a)' . ($b && $a) . '<br>'); //1
 echo ('($a & $a)'. ($a & $a) . '<br>'); //4
 echo ('($a && $a)' . ($a && $a) . '<br>'); //1
 echo ('($b & $b)' . ($b & $b) . '<br>'); //3
 echo ('($b && $b)' . ($b && $b) . '<br>'); //1
?>

<?php
 $a = 2;
 $b = 3;
 echo ('($a | $b))' . ($a | $b) . '<br>'); //3
 echo ('($a || $b))' . ($a || $b) . '<br>'); //1
 echo ('($b | $a)' . ($b | $a) . '<br>'); //3
 echo ('($b || $a)' . ($b || $a) . '<br>'); //1
 echo ('($a | $a)'. ($a | $a) . '<br>'); //2
 echo ('($a || $a)' . ($a || $a) . '<br>'); //1
 echo ('($b | $b)' . ($b | $b) . '<br>'); //3
 echo ('($b || $b)' . ($b || $b) . '<br>'); //1

 echo ('($a & $b))' . ($a & $b) . '<br>'); //2 <----------------------------
 echo ('($a && $b))' . ($a && $b) . '<br>'); //1
 echo ('($b & $a)' . ($b & $a) . '<br>'); //2 <-----------------------------
 echo ('($b && $a)' . ($b && $a) . '<br>'); //1
 echo ('($a & $a)'. ($a & $a) . '<br>'); //2
 echo ('($a && $a)' . ($a && $a) . '<br>'); //1
 echo ('($b & $b)' . ($b & $b) . '<br>'); //3
 echo ('($b && $b)' . ($b && $b) . '<br>'); //1
?>

When the one of the operators were 2, the cases with "<------------"
returns 2 otherwise returns 0 (Or 1 when any operator is 1). And if
the operators are 1 and 2, return 0 too. Its curious for me.

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

Reply via email to