2013/1/3 Marc Guay <marc.guay@xxxxxxxxx>: > 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.volmar@xxxxxxxxx> > Date: 3 January 2013 12:42 > Subject: Re: Boolean type forced on string assignment inside if statement > To: Marc Guay <marc.guay@xxxxxxxxx> > > > 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