user151841
user151841

Reputation: 18046

unsigned tinyint in php?

I'm working on a class to manipulate html hex color codes in php. Internally, the class treats RGB values as decimals. When I'm adding or subtracting, I never want the value to exceed 255 nor 'subceed' zero.

If course, I can do something piecemeal like

if ( $val >  255 ) {
    $val = 255;
} 
if ( $val < 0 ) {
    $val = 0;
}

But that's verbose :P

Is there a clever, one-linish way I can get the value to stay between 0 and 255?

Upvotes: 5

Views: 973

Answers (3)

Jonathon Vandezande
Jonathon Vandezande

Reputation: 2476

Or you could be that guy who uses nested ternary operators.

eg.

( ($num > 255) ? 255 : ( ($num < 0) ? 0 : $num) )

Upvotes: 0

Gordon
Gordon

Reputation: 316979

Using the bitwise OR operator would work

if(($num | 255) === 255) { /* ... */ }

Example:

foreach (range(-1000, 1000) as $num) {
    if(($num | 255) === 255) {
        echo "$num, ";
    };
}

would print out all the numbers from 0 to 255.

Upvotes: 1

Narcissus
Narcissus

Reputation: 3194

You could possibly say something like: $val = max(0, min(255, $val));

Upvotes: 11

Related Questions