PHP Comparison Operators


Introduction to PHP Comparison Operators

Comparison operators in PHP are essential tools that allow developers to compare values and make logical decisions in their code. These operators evaluate the relationship between two values and return a boolean result (true or false), which is fundamental for controlling program flow through conditional statements like if, else, and switch. Understanding PHP comparison operators is crucial for writing effective conditional logic, validating data, and implementing business rules in web applications.

This comprehensive guide explores all PHP comparison operators in detail, including their syntax, behavior with different data types, type juggling implications, and practical use cases. Each operator is demonstrated with clear code examples showing both the comparison and its output. The content is optimized for search engines with high-ranking keywords such as "PHP comparison operators," "PHP equal vs identical," "PHP greater than operator," and "PHP type comparison."



Types of PHP Comparison Operators

PHP provides several comparison operators that evaluate values in different ways:

Operator Name Description Example Returns True When
== Equal Loose comparison of values $a == $b Values are equal after type juggling
=== Identical Strict comparison of values and types $a === $b Values and types are identical
!= or <> Not equal Loose comparison of inequality $a != $b Values are not equal after type juggling
!== Not identical Strict comparison of inequality $a !== $b Values or types are different
< Less than Numeric comparison $a < $b $a is numerically less than $b
> Greater than Numeric comparison $a > $b $a is numerically greater than $b
<= Less than or equal to Numeric comparison $a <= $b $a is less than or equal to $b
>= Greater than or equal to Numeric comparison $a >= $b $a is greater than or equal to $b
<=> Spaceship Three-way comparison $a <=> $b Returns -1, 0, or 1 depending on comparison


1. Equal Operator (==)

The equal operator performs loose comparison, converting types if necessary.

Syntax:


$result = $a == $b;

Example:


<?php
$a = 5;
$b = "5";
var_dump($a == $b);
?>

Output

bool(true)

Type Juggling Behavior:

<?php
var_dump(0 == "hello");  // true (string "hello" converted to 0)
var_dump(1 == "1");      // true
var_dump(true == 1);     // true
?>

Output

bool(true)
bool(true)
bool(true)


2. Identical Operator (===)

The identical operator performs strict comparison, checking both value and type.

Syntax:


$result = $a === $b;

Example:


<?php
$a = 5;
$b = "5";
var_dump($a === $b);
?>

Output

bool(false)

Strict Comparison Examples:

<?php
var_dump(0 === "0");      // false
var_dump(false === 0);    // false
var_dump(null === false); // false
?>

Output

bool(false)
bool(false)
bool(false)


3. Not Equal Operators (!= and <>)

These operators perform loose inequality comparison.

Syntax:


$result = $a != $b;
// OR
$result = $a <> $b;

Example:


<?php
$a = 10;
$b = "10";
var_dump($a != $b);
var_dump($a <> $b);
?>

Output

bool(false)
bool(false)

Type Juggling Implications:

<?php
var_dump(0 != "hello");  // false (0 equals "hello" after juggling)
var_dump(1 != "1");      // false
?>

Output

bool(false)
bool(false)


4. Not Identical Operator (!==)

The not identical operator performs strict inequality comparison.

Syntax:


$result = $a !== $b;

Example:


<?php
$a = 5;
$b = "5";
var_dump($a !== $b);
?>

Output

bool(true)

Strict Inequality Examples:

<?php
var_dump(0 !== "0");      // true
var_dump(false !== 0);    // true
var_dump(null !== "");    // true
?>

Output

bool(true)
bool(true)
bool(true)


5. Greater Than Operators (>, >=)

These operators compare numeric values.

Syntax:


$result = $a > $b;   // Greater than
$result = $a >= $b;  // Greater than or equal to

Example:


<?php
$age = 25;
var_dump($age > 18);
var_dump($age >= 21);
?>

Output

bool(true)
bool(true)

String Comparison Behavior:

<?php
var_dump("apple" > "banana");  // false (a comes before b)
var_dump("10" > "2");          // false (lexicographical comparison)
?>

Output

bool(false)
bool(false)


6. Less Than Operators (<, <=)

These operators compare numeric values.

Syntax:


$result = $a < $b;   // Less than
$result = $a <= $b;  // Less than or equal to

Example:


<?php
$temperature = 72;
var_dump($temperature < 80);
var_dump($temperature <= 72);
?>

Output

bool(true)
bool(true)

Date Comparison Example:

<?php
$today = date("Y-m-d");
$expiry = "2023-12-31";
var_dump($today <= $expiry);
?>

Output

bool(true) // Assuming current date is before expiry


7. Spaceship Operator (<=>)

Introduced in PHP 7, this operator performs three-way comparison.

Syntax:


$result = $a <=> $b;
// Returns:
// -1 if $a < $b
// 0 if $a == $b
// 1 if $a > $b

Example:


<?php
var_dump(5 <=> 3);
var_dump(5 <=> 5);
var_dump(3 <=> 5);
?>

Output

int(1)
int(0)
int(-1)

Practical Use Case: Sorting

<?php
$numbers = [3, 1, 4, 2];
usort($numbers, function($a, $b) {
    return $a <=> $b;
});
print_r($numbers); 
?>

Output

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)


Comparison Operator Precedence

Comparison operators have lower precedence than arithmetic operators but higher than logical operators:

<?php
$result = 5 + 3 > 2 * 4;  // Equivalent to (5 + 3) > (2 * 4)
var_dump($result);
?>

Output

bool(true)

Best Practices for Comparison Operators

  • Use strict comparisons (===, !==) to avoid type juggling surprises
  • Be explicit with type casting when needed
  • Understand automatic type conversion rules for loose comparisons
  • Use parentheses for complex comparisons to ensure proper evaluation order
  • Consider the spaceship operator for sorting callbacks and three-way comparisons


PHP comparison operators are powerful tools for controlling program flow and making decisions. This guide covered:

  • Loose (==, !=) and strict (===, !==) comparison operators
  • Numeric comparison operators (>, <, >=, <=)
  • The spaceship operator (<=>) for three-way comparisons
  • Type juggling behavior and best practices
  • Practical examples and use cases

By mastering these operators, developers can write more reliable and predictable PHP code. For further learning, explore logical operators, ternary operators, and other PHP control structures.