PHP operators are symbols that perform math, compare values, assign variables, and combine boolean conditions. Choosing strict and null-safe operators keeps your PHP logic predictable and prevents subtle type-coercion bugs.
Standard arithmetic operators (+, -, *, /, %, **) handle numbers, while compound assignment operators (+=, .=, ??=) update variables concisely.
<?php
declare(strict_types=1);
$subtotal = 100;
$subtotal += 20; // 120
$remainder = 17 % 5; // 2
$isLoggedIn = true;
$isVerified = false;
$canCheckout = $isLoggedIn && $isVerified; // false
echo "Subtotal: {$subtotal}, Remainder: {$remainder}" . PHP_EOL;
var_dump($canCheckout);
Logical && and || short-circuit immediately when the left side decides the result. Always use && and || instead of and / or, which have lower operator precedence than =.
Modern PHP relies heavily on strict equality (===), the spaceship operator (<=>) for sorting, and null coalescing (??) for safe defaults.
<?php
declare(strict_types=1);
// Strict vs loose comparison
var_dump(0 === "0"); // false (different types)
var_dump(0 == "0"); // true (type juggling)
// Spaceship operator returns -1, 0, or 1
$prices = [45, 12, 89, 25];
usort($prices, fn (int $a, int $b): int => $a <=> $b);
print_r($prices);
// Null coalescing fallback
$inputTheme = null;
$theme = $inputTheme ?? 'system';
echo "Active theme: {$theme}" . PHP_EOL;
== instead of ===: Loose equality treats "0e123" == "0e456" or 0 == "" unexpectedly in older code. Default to === and !==.and or or with assignment: $result = false || true sets $result to true, whereas $result = false or true assigns false first!?: (Elvis) with ?? (Null Coalescing): $val ?: 'default' triggers a warning if $val is undefined, while $val ?? 'default' safely checks isset().<=>) return?It returns -1 when the left operand is smaller, 0 when both are equal, and 1 when the left operand is larger, making it ideal inside usort() callbacks.
?? and ??=?$a ?? $b returns $a if set and non-null, otherwise $b. $a ??= $b assigns $b back into $a only when $a is null or unset.
++$i do differently from $i++?++$i increments $i before returning its value, whereas $i++ returns the current value first and increments afterward.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.