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"
42
false
true
null
[]
[1]
stdClass
"0"
0
0
0
-1
1
-1
-1
-1
-1
-1
0
-1
1
-1
-1
-1
"0.0"
0
0
0
-1
1
-1
-1
-1
-1
-1
1
0
1
-1
-1
-1
0
0
0
0
0
0
-1
-1
-1
-1
-1
0
-1
0
-1
-1
⚠
"foo"
1
1
0
0
1
1
1
1
1
-1
1
0
1
-1
-1
-1
""
-1
-1
0
-1
0
-1
-1
-1
-1
-1
0
-1
0
-1
-1
-1
" 42"
1
1
1
-1
1
0
0
0
-1
0
1
0
1
-1
-1
-1
"042"
1
1
1
-1
1
0
0
0
-1
0
1
0
1
-1
-1
-1
"42"
1
1
1
-1
1
0
0
0
-1
0
1
0
1
-1
-1
-1
"42foo"
1
1
1
-1
1
1
1
1
0
0
1
0
1
-1
-1
-1
42
1
1
1
1
1
0
0
0
0
0
1
0
1
-1
-1
⚠
false
0
-1
0
-1
0
-1
-1
-1
-1
-1
0
-1
0
0
-1
-1
true
1
0
1
0
1
0
0
0
0
0
1
0
1
1
0
0
null
-1
-1
0
-1
0
-1
-1
-1
-1
-1
0
-1
0
0
-1
-1
[]
1
1
1
1
1
1
1
1
1
1
0
-1
0
0
-1
-1
[1]
1
1
1
1
1
1
1
1
1
1
1
0
1
1
0
-1
stdClass
1
1
⚠
1
1
1
1
1
1
⚠
1
0
1
1
1
0
🔍 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"
42
false
true
null
[]
[1]
stdClass
"0"
true
true
true
false
false
false
false
false
false
false
true
false
false
false
false
false
"0.0"
true
true
true
false
false
false
false
false
false
false
false
true
false
false
false
false
0
true
true
true
true
true
false
false
false
false
false
true
false
true
false
false
⚠
"foo"
false
false
true
true
false
false
false
false
false
false
false
true
false
false
false
false
""
false
false
true
false
true
false
false
false
false
false
true
false
true
false
false
false
" 42"
false
false
false
false
false
true
true
true
false
true
false
true
false
false
false
false
"042"
false
false
false
false
false
true
true
true
false
true
false
true
false
false
false
false
"42"
false
false
false
false
false
true
true
true
false
true
false
true
false
false
false
false
"42foo"
false
false
false
false
false
false
false
false
true
true
false
true
false
false
false
false
42
false
false
false
false
false
true
true
true
true
true
false
true
false
false
false
⚠
false
true
false
true
false
true
false
false
false
false
false
true
false
true
true
false
false
true
false
true
false
true
false
true
true
true
true
true
false
true
false
false
true
true
null
false
false
true
false
true
false
false
false
false
false
true
false
true
true
false
false
[]
false
false
false
false
false
false
false
false
false
false
true
false
true
true
false
false
[1]
false
false
false
false
false
false
false
false
false
false
false
true
false
false
true
false
stdClass
false
false
⚠
false
false
false
false
false
false
⚠
false
true
false
false
false
true
🔀 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"
42
false
true
null
[]
[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"
42
false
true
null
[]
[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"
42
false
true
null
[]
[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"
42
false
true
null
[]
[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