# Finding Even or Odd numbers with PHP

PHP does not provide any mathematical function like is_even to help you check if a given integer is an Even number or Odd. Writing your own such function is not difficult and below are listed a number of alternatives that provide different logical solutions to do this.

What it does is first of all casts the given number to

Another alternative is using bitwise

More variants that use bitwise operators:

and also...

More variants are possible using bitwise operators but I stick it to above functions.

The simplest and the most obvious solution to finding even and odd numbers is using

It divides the

Now, using these functions:

- function is_even( $int ) {
- return !( ( ( int ) $int ) & 1 );
- }

What it does is first of all casts the given number to

int

and then applies bitwise &

operator on $int

and 1

. Bitwise &

operator checks for bits that are ON

in both of its operands $int

and 1

. 1

has just the least significant bit ON

, and if the same bit is ON

in $int

, the whole answer of the expression becomes 1

otherwise it is 0

(1

here means that $int

is an Odd number, so we have to inverse 1

and cast it to bool

to make the function return false

in such case). The outcome is reversed using !

(Not) operator. !

operator reverts its operand i.e the answer of the whole expression, and casts the result to bool

.Another alternative is using bitwise

^

(Xor) operator that can replace !

logical Operator.- function is_even( $int ) {
- return ( ( ( int ) $int ) & 1 ) ^ 1;
- }

More variants that use bitwise operators:

- function is_even( $int ) {
- return !( ( ( ( int ) $int ) << 31 ) >> 31 );
- } //See Note

and also...

- function is_even( $int ) {
- return ( ( ( ( int ) $int ) << 31 ) >> 31 ) ^ 1;
- } //See Note

**Note**: Above two functions that use<<

and >>

bit shifting operators do not work with negative integers. So, use with caution. In the presence of better alternatives, these are listed here just for your information.More variants are possible using bitwise operators but I stick it to above functions.

The simplest and the most obvious solution to finding even and odd numbers is using

%

operator.- function is_even( $int ) {
- return !( ( (int) $int ) % 2 );
- }

It divides the

$int

by 2

and checks the remainder. If the remainder is 1

means the number is Odd, !

operator reverts return value to false

, otherwise it returns true

.Now, using these functions:

- $number = 3432;
- if( is_even( $number ) ) {
- echo 'This is even.';
- }
- if( !is_even( $number ) ) {
- echo 'Not an Even.';
- }

## Performance

All of these functions work equally fine and have the same performance with less than 5% variance.- Implementing logical right shifting in PHP
- Faster Random Numbers with PHP
- Getting Red-Green-Blue from Hexadecimal Colors - PHP Bitwise