Michael, I like your idea, and had I designed this site, I would have
the bitmask simmilar to what you suggest. However, I'm a contractor
modding an existing/legacy site. Basically the way they have it, is that
each user has a field in the db that is simply a string/mask of which
books a person has access to see. So given the example below, "10110"
means that the person can view books 1, 3, and 4, but not 2 or 5. dig?

Now, I can brute force this, since there are only a few books. That
doesn't lend itself nicely to expansion, but may be my only way. I just
have a gut feeling that it can be automated somehow. To turn 1,3,4 into
10110 seems like there is some 'math' there that can work. I also
thought there might be a built in PHP function that may point me in the
right direction. I'll post my solution when I get it working if it's
elegant...

Thanks anyways.

P.s. thanks for the correction on boolean vs bitwise OR. Duh. I should
have known that ;-)

> -----Original Message-----
> Does anyone know of a nice efficient way to convert an array 
> of values into a "mask"...
> 
> Here's the deal. Given an array such that:
> 
> $purchitem[0] = 1;
> $purchitem[1] = 3;
> $purchitem[2] = 4;
> 
> I want to end up with a variable like this:
> 
> $mask = "10110";
> 
> Additionally, my theory is that then the person purchases 
> another book later
> 
> $purchitem[0] = 2;
> 
> My new mask should be $purchmask = "01000";
> 
> Then I can load their previous mask from the database and 
> bitwise OR it with the new mask to set the correct permissions. i.e.
> 
> $newmask = $mask | $purchmask;
> 
> Or ideally = "11110"
> 
> Can I boolean OR strings like that in the way I 'hope' it 
> will work? Do I need to convert it to an intermediate stage 
> or cast it or anything?
> 
> Does this make sense? It's for an online book shopping cart. 
> I have the reverse working, where I can split the mask into 
> what books. And I also have the $purchitem[] working.


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

Reply via email to