📊 PHP 7.x Comparison Cheat Sheet

Valid for PHP 7.0 - 7.4 – behavior is consistent across all these versions. (See results for PHP 8.x)

Operator ==

true
false
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"truetruetruefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalsefalse
"0.0"truetruetruefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalse
0truetruetruetruetruefalsefalsefalsefalsefalsetruefalsetruefalsefalse
"foo"falsefalsetruetruefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalse
""falsefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruefalsefalsefalse
" 42"falsefalsefalsefalsefalsetruetruetruefalsetruefalsetruefalsefalsefalsefalse
"042"falsefalsefalsefalsefalsetruetruetruefalsetruefalsetruefalsefalsefalsefalse
"42"falsefalsefalsefalsefalsetruetruetruefalsetruefalsetruefalsefalsefalsefalse
"42foo"falsefalsefalsefalsefalsefalsefalsefalsetruetruefalsetruefalsefalsefalsefalse
42falsefalsefalsefalsefalsetruetruetruetruetruefalsetruefalsefalsefalse
falsetruefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
truefalsetruefalsetruefalsetruetruetruetruetruefalsetruefalsefalsetruetrue
nullfalsefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
[]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
[1]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsetruefalse
stdClassfalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsetrue

Operator ===

true
false
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"truefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
"0.0"falsetruefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
0falsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
"foo"falsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
""falsefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
" 42"falsefalsefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
"042"falsefalsefalsefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalse
"42"falsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalse
"42foo"falsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalse
42falsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalsefalsefalse
falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalsefalse
truefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalse
nullfalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalse
[]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalse
[1]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalse
stdClassfalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetrue

Operator <

true
false
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"falsefalsefalsetruefalsetruetruetruetruetruefalsetruefalsetruetruetrue
"0.0"falsefalsefalsetruefalsetruetruetruetruetruefalsefalsefalsetruetruetrue
0falsefalsefalsefalsefalsetruetruetruetruetruefalsetruefalsetruetrue
"foo"falsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsetruetruetrue
""truetruefalsetruefalsetruetruetruetruetruefalsetruefalsetruetruetrue
" 42"falsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruetruetrue
"042"falsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruetruetrue
"42"falsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruetruetrue
"42foo"falsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalsetruetruetrue
42falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruetrue
falsefalsetruefalsetruefalsetruetruetruetruetruefalsetruefalsefalsetruetrue
truefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
nulltruetruefalsetruefalsetruetruetruetruetruefalsetruefalsefalsetruetrue
[]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsetruetrue
[1]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetrue
stdClassfalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse

Operator >

true
false
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"falsefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalse
"0.0"falsefalsefalsefalsetruefalsefalsefalsefalsefalsetruefalsetruefalsefalsefalse
0falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
"foo"truetruefalsefalsetruetruetruetruetruefalsetruefalsetruefalsefalsefalse
""falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
" 42"truetruetruefalsetruefalsefalsefalsefalsefalsetruefalsetruefalsefalsefalse
"042"truetruetruefalsetruefalsefalsefalsefalsefalsetruefalsetruefalsefalsefalse
"42"truetruetruefalsetruefalsefalsefalsefalsefalsetruefalsetruefalsefalsefalse
"42foo"truetruetruefalsetruetruetruetruefalsefalsetruefalsetruefalsefalsefalse
42truetruetruetruetruefalsefalsefalsefalsefalsetruefalsetruefalsefalse
falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
truetruefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
nullfalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
[]truetruetruetruetruetruetruetruetruetruefalsefalsefalsefalsefalsefalse
[1]truetruetruetruetruetruetruetruetruetruetruefalsetruetruefalsefalse
stdClasstruetruetruetruetruetruetruetruetruefalsetruetruetruefalse

Operator <=

true
false
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"truetruetruetruefalsetruetruetruetruetruetruetruefalsetruetruetrue
"0.0"truetruetruetruefalsetruetruetruetruetruefalsetruefalsetruetruetrue
0truetruetruetruetruetruetruetruetruetruetruetruetruetruetrue
"foo"falsefalsetruetruefalsefalsefalsefalsefalsetruefalsetruefalsetruetruetrue
""truetruetruetruetruetruetruetruetruetruetruetruetruetruetruetrue
" 42"falsefalsefalsetruefalsetruetruetruetruetruefalsetruefalsetruetruetrue
"042"falsefalsefalsetruefalsetruetruetruetruetruefalsetruefalsetruetruetrue
"42"falsefalsefalsetruefalsetruetruetruetruetruefalsetruefalsetruetruetrue
"42foo"falsefalsefalsetruefalsefalsefalsefalsetruetruefalsetruefalsetruetruetrue
42falsefalsefalsefalsefalsetruetruetruetruetruefalsetruefalsetruetrue
falsetruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetrue
truefalsetruefalsetruefalsetruetruetruetruetruefalsetruefalsefalsetruetrue
nulltruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetrue
[]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruetruetruetruetruetrue
[1]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsetruetrue
stdClassfalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsetrue

Operator >=

true
false
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"truetruetruefalsetruefalsefalsefalsefalsefalsetruefalsetruefalsefalsefalse
"0.0"truetruetruefalsetruefalsefalsefalsefalsefalsetruetruetruefalsefalsefalse
0truetruetruetruetruefalsefalsefalsefalsefalsetruefalsetruefalsefalse
"foo"truetruetruetruetruetruetruetruetruefalsetruetruetruefalsefalsefalse
""falsefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruefalsefalsefalse
" 42"truetruetruefalsetruetruetruetruefalsetruetruetruetruefalsefalsefalse
"042"truetruetruefalsetruetruetruetruefalsetruetruetruetruefalsefalsefalse
"42"truetruetruefalsetruetruetruetruefalsetruetruetruetruefalsefalsefalse
"42foo"truetruetruefalsetruetruetruetruetruetruetruetruetruefalsefalsefalse
42truetruetruetruetruetruetruetruetruetruetruetruetruefalsefalse
falsetruefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
truetruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetrue
nullfalsefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
[]truetruetruetruetruetruetruetruetruetruetruefalsetruetruefalsefalse
[1]truetruetruetruetruetruetruetruetruetruetruetruetruetruetruefalse
stdClasstruetruetruetruetruetruetruetruetruetruetruetruetruetrue

Operator <=>

Spaceship operator: Returns -1 if left is less, 0 if equal, 1 if left is greater.
-1 (less)
0 (equal)
1 (greater)
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"000-11-1-1-1-1-10-11-1-1-1
"0.0"000-11-1-1-1-1-1101-1-1-1
000000-1-1-1-1-10-10-1-1
"foo"110011111-1101-1-1-1
""-1-10-10-1-1-1-1-10-10-1-1-1
" 42"111-11000-10101-1-1-1
"042"111-11000-10101-1-1-1
"42"111-11000-10101-1-1-1
"42foo"111-1111100101-1-1-1
421111100000101-1-1
false0-10-10-1-1-1-1-10-100-1-1
true1010100000101100
null-1-10-10-1-1-1-1-10-100-1-1
[]11111111110-100-1-1
[1]111111111110110-1
stdClass11111111101110

🔍 in_array() without strict mode

Testing how in_array() finds values when strict mode is disabled (default behavior).
Needle"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"truetruetruefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalsefalse
"0.0"truetruetruefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalse
0truetruetruetruetruefalsefalsefalsefalsefalsetruefalsetruefalsefalse
"foo"falsefalsetruetruefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalse
""falsefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruefalsefalsefalse
" 42"falsefalsefalsefalsefalsetruetruetruefalsetruefalsetruefalsefalsefalsefalse
"042"falsefalsefalsefalsefalsetruetruetruefalsetruefalsetruefalsefalsefalsefalse
"42"falsefalsefalsefalsefalsetruetruetruefalsetruefalsetruefalsefalsefalsefalse
"42foo"falsefalsefalsefalsefalsefalsefalsefalsetruetruefalsetruefalsefalsefalsefalse
42falsefalsefalsefalsefalsetruetruetruetruetruefalsetruefalsefalsefalse
falsetruefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
truefalsetruefalsetruefalsetruetruetruetruetruefalsetruefalsefalsetruetrue
nullfalsefalsetruefalsetruefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
[]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsetruetruefalsefalse
[1]falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsetruefalse
stdClassfalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsetrue

🔀 Sorting behavior (SORT flags)

SORT flags are used in sorting functions (sort, usort, asort, etc.) and array_unique().
When two values are considered equal (=), their relative order in the result is undefined and may vary between PHP versions or implementations.

Sorting flag SORT_REGULAR

< (less than)
= (equal)
> (greater than)
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"===<><<<<<=<><<<
"0.0"===<><<<<<>=><<<
0=====<<<<<=<=<<
"foo">>==>>>>><>=><<<
""<<=<=<<<<<=<=<<<
" 42">>><>===<=>=><<<
"042">>><>===<=>=><<<
"42">>><>===<=>=><<<
"42foo">>><>>>>==>=><<<
42>>>>>=====>=><<
false=<=<=<<<<<=<==<<
true>=>=>=====>=>>==
null<<=<=<<<<<=<==<<
[]>>>>>>>>>>=<==<<
[1]>>>>>>>>>>>=>>=<
stdClass>>>>>>>>>=>>>=

Sorting flag SORT_NUMERIC

< (less than)
= (equal)
> (greater than)
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"=====<<<<<=<==<
"0.0"=====<<<<<=<==<
0=====<<<<<=<==<
"foo"=====<<<<<=<==<
""=====<<<<<=<==<
" 42">>>>>=====>>>>>
"042">>>>>=====>>>>>
"42">>>>>=====>>>>>
"42foo">>>>>=====>>>>>
42>>>>>=====>>>>>
false=====<<<<<=<==<
true>>>>><<<<<>=>>=
null=====<<<<<=<==<
[]=====<<<<<=<==<
[1]>>>>><<<<<>=>>=
stdClass

Sorting flag SORT_STRING

< (less than)
= (equal)
> (greater than)
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"=<=<>><<<<><>
"0.0">=><>><<<<><>
0=<=<>><<<<><>
"foo">>>=>>>>>>>>>
""<<<<=<<<<<=<=
" 42"<<<<>=<<<<><>
"042">>><>>=<<<><>
"42">>><>>>=<=>>>
"42foo">>><>>>>=>>>>
42>>><>>>=<=>>>
false<<<<=<<<<<=<=
true>>><>>><<<>=>
null<<<<=<<<<<=<=
[]
[1]
stdClass

Sorting flag SORT_NATURAL

< (less than)
= (equal)
> (greater than)
Error
"0""0.0"0"foo"""" 42""042""42""42foo"42falsetruenull[][1]stdClass
"0"=<=<><<<<<><>
"0.0">=><><<<<<><>
0=<=<><<<<<><>
"foo">>>=>>>>>>>>>
""<<<<=<<<<<=<=
" 42">>><>===<=>>>
"042">>><>===<=>>>
"42">>><>===<=>>>
"42foo">>><>>>>=>>>>
42>>><>===<=>>>
false<<<<=<<<<<=<=
true>>><><<<<<>=>
null<<<<=<<<<<=<=
[]
[1]
stdClass

📅 DateTime objects

DateTime objects support comparison operators, which many developers don't realize!

✅ DateTime supports <, >, <=, >=

$past   = new DateTime('2023-01-01');
$now    = new DateTime('2024-01-01');
$future = new DateTime('2025-01-01');

$past < $now     → true
$future > $now   → true
$now <= $now     → true

✅ == checks value equality, === checks identity

$date1 = new DateTime('2024-06-15 10:30:00');
$date2 = new DateTime('2024-06-15 10:30:00');  // same time, different object
$date3 = $date1;                               // same reference

$date1 == $date2   → true  // ✅ same timestamp
$date1 === $date2  → false // ❌ different objects
$date1 === $date3  → true  // ✅ same reference

✅ DateTime and DateTimeImmutable are comparable

$mutable   = new DateTime('2024-03-15 12:00:00');
$immutable = new DateTimeImmutable('2024-03-15 12:00:00');

$mutable == $immutable   → true  // ✅ same timestamp