probably priority issue. try:

if (($One & $Two) == $One) - - in your example this means: ((0100 & 1111) == 0100) (0100 == 0100) TRUE ...in other case 0100 & (1111 == 0100) is 0100 & 0 is always 0 hope this helps Buchholz "Fred" wrote > From: "Fred" <[EMAIL PROTECTED]> > Date: Mon, 19 Nov 2001 18:02:53 -0800 > Subject: [PHP] Bitwise & > > I have 17 boolean variables which need to be stored in a MySQL database. I > created a SET Column to store each of the boolean values as bits in the > column. I should be able to test for the truth of a particular variable by > checking if the corresponding bit is set. > > For example, if the first four variables are set (i.e. Column = a,b,c,d) > then the numeric value of the column is 15 or 1111. To test for c I would > check to see if the third bit (4 or 100) is set. > > I chose to do the check this way: > > if ($One & $Two == $One) echo "True"; > > This does not seem to work in many instances. Take the example above: > 4 and 15 should equal 4 > 0100 and > 1111 equals > 0100 > > For some reason, my script gives 0000 as the result of 0100 and 1111. It is > fairly clear that this is not the correct behavior of the bitwise & > operator. > > Oddly enough, in some instances is works as expected: > 16 and 17 should equal 16 > 10000 and > 10001 equals > 10000 > > My script has no problem generating the expected result here. > > Perhaps this problem arises from the loosely typed nature of PHP variables, > but I do not see how it could. Any pointers would be appreciated. > > Fred -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]