Conditionals
if / else if / else
The if statement executes code when a condition is true:
ZYMBA
$score = 85;
if ($score >= 90) {
$grade = "A";
} else if ($score >= 80) {
$grade = "B";
} else if ($score >= 70) {
$grade = "C";
} else {
$grade = "F";
}
echo $grade; // "B"
Conditions can use any expression that evaluates to a truthy or falsy value:
ZYMBA
$name = "Alice";
if ($name) {
echo "Name is set";
}
if (count $items > 0) {
echo "Items available";
}
unless
The unless keyword is the inverse of if — it executes when the condition is false:
ZYMBA
$loggedIn = false;
unless ($loggedIn) {
echo "Please log in";
}
This is equivalent to if (!$loggedIn) but reads more naturally for guard clauses:
ZYMBA
function $processOrder($order) {
unless ($order is object) {
throw new @Exception("Invalid order");
}
unless (exists $order.items) {
throw new @Exception("Order has no items");
}
// Process...
}
Ternary operator
For simple conditional expressions:
ZYMBA
$status = ($score >= 60) ? "Pass" : "Fail";
$label = ($count == 1) ? "item" : "items";
echo "$count $label"; // "5 items"
Switch statement
The switch statement matches a value against multiple cases:
ZYMBA
$status = "shipped";
switch ($status) {
case "pending":
echo "Order is pending";
break;
case "shipped":
echo "Order has been shipped";
break;
case "delivered":
echo "Order delivered";
break;
default:
echo "Unknown status";
}
Multiple values per case
A single case can match multiple values:
ZYMBA
$day = "Saturday";
switch ($day) {
case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday":
echo "Weekday";
break;
case "Saturday", "Sunday":
echo "Weekend";
break;
}
Fall-through behavior
Without break, execution falls through to the next case:
ZYMBA
$level = 1;
switch ($level) {
case 1:
echo "one ";
case 2:
echo "two ";
break;
case 3:
echo "three ";
}
// Output: one two (falls through from case 1 to case 2)
warning
Always include break in each case unless you intentionally want fall-through behavior.