A switch compares one value with several cases.

switch case Each `case` handles one matching value, and `default` handles the fallback.

Switch Statements

code
switch_statement.php
Replay: real traced execution (multi-file project)
<?php
$code = 2;
$label = "";
$fee = 0;

switch ($code) {
    case 1:
        $label = "standard";
        $fee = 5;
        break;
    case 2:
        $label = "express";
        $fee = 12;
        break;
    default:
        $label = "manual";
        $fee = 20;
        break;
}

echo "code=" . $code . "\n";
echo "label=" . $label . "\n";
echo "fee=" . $fee . "\n";
<?php
$code = 1;
$label = "";
$fee = 0;

switch ($code) {
    case 1:
        $label = "standard";
        $fee = 5;
        break;
    case 2:
        $label = "express";
        $fee = 12;
        break;
    default:
        $label = "manual";
        $fee = 20;
        break;
}

echo "code=" . $code . "\n";
echo "label=" . $label . "\n";
echo "fee=" . $fee . "\n";
<?php
$code = 9;
$label = "";
$fee = 0;

switch ($code) {
    case 1:
        $label = "standard";
        $fee = 5;
        break;
    case 2:
        $label = "express";
        $fee = 12;
        break;
    default:
        $label = "manual";
        $fee = 20;
        break;
}

echo "code=" . $code . "\n";
echo "label=" . $label . "\n";
echo "fee=" . $fee . "\n";
  1. $code ← 2, $label ← (empty), $fee ← 0

    1<?php2$code→ 2 = 2; //@code=1, 93$label→ (empty) = "";4$fee→ 0 = 0;
  2. echo "code=" . $code . " ";

    21echo "code=" . $code2 . "\n";22echo "label=" . $labelexpress . "\n";23echo "fee=" . $fee12 . "\n";
    outputcode=2
    label=express
    fee=12
  1. $code ← 1, $label ← (empty), $fee ← 0

    1<?php2$code→ 1 = 1;3$label→ (empty) = "";4$fee→ 0 = 0;
  2. echo "code=" . $code . " ";

    21echo "code=" . $code1 . "\n";22echo "label=" . $labelstandard . "\n";23echo "fee=" . $fee5 . "\n";
    outputcode=1
    label=standard
    fee=5
  1. $code ← 9, $label ← (empty), $fee ← 0

    1<?php2$code→ 9 = 9;3$label→ (empty) = "";4$fee→ 0 = 0;
  2. echo "code=" . $code . " ";

    21echo "code=" . $code9 . "\n";22echo "label=" . $labelmanual . "\n";23echo "fee=" . $fee20 . "\n";
    outputcode=9
    label=manual
    fee=20

Match the Shipping Code

  1. $code starts at 2.
  2. switch checks the matching case.
  3. case 2 runs.
  4. The label becomes express and the fee becomes 12. | Code | Case | Label | Fee | | --- | --- | --- | --- | | 1 | case 1 | standard | 5 | | 2 | case 2 | express | 12 | | 9 | default | manual | 20 |

Exercise: switch_statement.php

Use switch to map a shipping code to a label and fee