Control Flow Details
Elseif Chains
An elseif chain checks conditions in order until one branch matches.
ordered conditions
Only the first matching `if` or `elseif` block runs.
Elseif Chains
elseif_chain.php
Replay: real traced execution (multi-file project)
<?php
$level = 2;
$label = "";
$priority = 0;
if ($level >= 4) {
$label = "critical";
$priority = 100;
} elseif ($level >= 2) {
$label = "normal";
$priority = 50;
} else {
$label = "low";
$priority = 10;
}
echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
echo "priority=" . $priority . "\n";
<?php
$level = 1;
$label = "";
$priority = 0;
if ($level >= 4) {
$label = "critical";
$priority = 100;
} elseif ($level >= 2) {
$label = "normal";
$priority = 50;
} else {
$label = "low";
$priority = 10;
}
echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
echo "priority=" . $priority . "\n";
<?php
$level = 4;
$label = "";
$priority = 0;
if ($level >= 4) {
$label = "critical";
$priority = 100;
} elseif ($level >= 2) {
$label = "normal";
$priority = 50;
} else {
$label = "low";
$priority = 10;
}
echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
echo "priority=" . $priority . "\n";
$level ← 2, $label ← (empty), $priority ← 0
1<?php2$level→ 2 = 2; //@level=1, 43$label→ (empty) = "";4$priority→ 0 = 0;56if ($level >= 4) {7 $label = "critical";8 $priority = 100;9} elseif ($level >= 2) {10 $label→ normal = "normal";11 $priority→ 50 = 50;12} else {13 $label = "low";14 $priority = 10;15}1617echo "level=" . $level2 . "\n";18echo "label=" . $labelnormal . "\n";19echo "priority=" . $priority50 . "\n";outputlevel=2 label=normal priority=50
$level ← 1, $label ← (empty), $priority ← 0
1<?php2$level→ 1 = 1;3$label→ (empty) = "";4$priority→ 0 = 0;56if ($level >= 4) {7 $label = "critical";8 $priority = 100;9} elseif ($level >= 2) {10 $label = "normal";11 $priority = 50;12} else {13 $label→ low = "low";14 $priority→ 10 = 10;15}1617echo "level=" . $level1 . "\n";18echo "label=" . $labellow . "\n";19echo "priority=" . $priority10 . "\n";outputlevel=1 label=low priority=10
$level ← 4, $label ← (empty), $priority ← 0
1<?php2$level→ 4 = 4;3$label→ (empty) = "";4$priority→ 0 = 0;$label ← critical, $priority ← 100
6if ($level4 >= 4) {7 $label→ critical = "critical";8 $priority→ 100 = 100;9} elseif ($level >= 2) {echo "level=" . $level . " ";
17echo "level=" . $level4 . "\n";18echo "label=" . $labelcritical . "\n";19echo "priority=" . $priority100 . "\n";outputlevel=4 label=critical priority=100
Check Levels in Order
$levelstarts at2.- The first check,
$level >= 4, is false. - The next check,
$level >= 2, is true. - The label becomes
normaland priority becomes50. | Level | First matching branch | Label | Priority | | --- | --- | --- | --- | |1|else|low|10| |2|elseif|normal|50| |4|if|critical|100|
Exercise: elseif_chain.php
Use an elseif chain to assign low, normal, or critical labels with priorities