PHP har de vanliga kontrollflödeskonstruktionerna — villkorsuttryck (, , ), loopar (, , ) och förgrening (, ) — plus ett par särskiljande egenskaper som för arrayer och det moderna -uttrycket.
ifswitchmatchforforeachwhilebreakcontinueforeachmatch<?php
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} else {
$grade = "F";
}
// ternary and null coalescing
$status = $age >= 18 ? "adult" : "minor";
$name = $input ?? "default"; // ?? — use default if null/unset (PHP 7+)
$value ??= "x"; // ??= assign if null (PHP 7.4)
Operatorn för null-koalescering ?? används ofta i PHP för standardvärden (returnerar höger sida om vänster är null eller inte är satt) — renare än isset()-kontroller.
switch ($day) {
case "Sat":
case "Sun":
$type = "weekend"; break; // ⚠️ break needed or it falls through
default:
$type = "weekday";
}
// match (PHP 8) — cleaner: returns a value, STRICT comparison, NO fall-through
$type = match($day) {
"Sat", "Sun" => "weekend", // multiple values, no break needed
default => "weekday",
};
match-uttrycket (PHP 8) är en modern förbättring jämfört med switch: det returnerar ett värde, använder strikt (===) jämförelse och har ingen fall-through (ingen break behövs) — föredraget i ny kod.
for ($i = 0; $i < 10; $i++) { }
foreach ($items as $item) { } // iterate array values
foreach ($map as $key => $value) { } // keys + values — the PHP idiom for arrays
while ($condition) { }
do { } while ($condition);
foreach är den idiomatiska, mest använda loopen i PHP för att iterera arrayer (med formen $key => $value för associativa arrayer).
foreach ($items as $item) {
if ($item->skip) continue; // skip to next iteration
if ($item->stop) break; // exit the loop
}
Kontrollflöde är den grundläggande mekanismen för att uttrycka logik, används i varje program, så att förstå PHPs konstruktioner är grundläggande vardagskunskap.
De flesta är standard, men ett fåtal PHPspecifika punkter spelar roll: foreach är den idiomatiska, dominerande loopen för att iterera PHPs allestädes närvarande arrayer (med formen $key => $value för kartor); operatorn för null-koalescering ?? (och ??=) används ofta för ren standardhantering (en särskilt PHP-idiomatisk form); och det moderna match-uttrycket (PHP 8) är en viktig förbättring jämfört med det felbenägna switch — returnerar ett värde, använder strikt jämförelse och eliminerar fall-through-buggar (det klassiska switch-fallet att glömma break).
Att känna till dessa konstruktioner och föredra de moderna, säkrare formerna (match framför switch, ?? för standardvärden) är vardagskunskap för att skriva ren, idiomatisk, felbuggarfri PHP-logik, vilket återspeglar flyt med både grunderna och PHPs moderna förbättringar.