Liam W
Liam W

Reputation: 1163

How to neatly check if 4 variables are the same?

How would someone neatly check if 4 variables are the same?

Obviously this wouldn't work:

if ($var1 === $var2 === $var3 === $var4)

But what would, without writing loads of code?

Upvotes: 1

Views: 166

Answers (6)

Shoe
Shoe

Reputation: 76240

Using array_unique you can check if the array of unique values from the variable list is 1 (which means they are all equal):

if (count(array_unique([$var1, $var2, $var3, $var4])) == 1)
    // all equal

This comes in handy especially when comparing a long list of variables, compared to a long list of == checks in an if statement.

Upvotes: 1

CCondron
CCondron

Reputation: 1974

if ($var1 === $var2 && $var3 === $var4 && $var1 === $var3)

You don't need to check if 2 and 4 are equal

Upvotes: 2

Joberror
Joberror

Reputation: 5890


In case you are dealing with many variables, I played with the below code and it works.


$m = 'var'; //Assuming you know the variable name format $var1, $var2, $var3,...

for( $n = 1; $n <= 3; $n++) { //testing for 4 variables

     $v = "$m$n";
     $n++;
     $w = "$m$n";

     if ( $$v !== $$w ) {
       echo "false";
       break;
     }

     $n--;
}

//Breaks and echo "false" as soon as one of the variables is not equal
//Note: increase the iteration for more variable.

Upvotes: 0

Karl Laurentius Roos
Karl Laurentius Roos

Reputation: 4399

One way to go would be this:

if ($var1 === $var2 && $var2 === $var3 && $var3 === $var4)

Not a huge amount of code and it gets the job done.

Upvotes: 3

Shawn Barratt
Shawn Barratt

Reputation: 472

You can use ! as your master and use &&

if($var1===$var2 && $var1 === $var3 && $var1 === $var4)

But this wont let you know which of the 4 is not like the others.

Upvotes: 0

Paul
Paul

Reputation: 141839

if(!array_diff([$var2, $var3, $var4], [$var1])){
     // All equal
}

Upvotes: 3

Related Questions