0) { return 0; } else { return 1; } case 2: return 2; } // ERROR: No else clause switch ($foo) { case 1: if ($bar > 0) { return 0; } elseif ($bar < 0) { return 1; } case 2: return 2; } // OK: No fall-through present switch ($foo) { case 1: if ($bar > 0) { return 0; } elseif ($bar < 0) { return 1; } } // ERROR: No else clause (nested) switch ($foo) { case 1: if ($bar > 0) { return 0; } else { if ($foo > $bar) { continue; } } case 2: return 2; } // OK: Every clause terminates switch ($foo) { case 1: if ($bar > 0) { return 0; } else { if ($foo > $bar) { continue; } else { break; } } case 2: return 2; } // ERROR: Non-termination IF clause switch ($foo) { case 1: if ($bar > 0) { $offset = 0; } else { break; } case 2: return 2; } // ERROR: Non-termination IF clause (nested) switch ($foo) { case 1: if ($bar > 0) { continue; } else { if ($foo > $bar) { $offset = 0; } else { break; } } case 2: return 2; } switch ($sContext) { case 'SOMETHING': case 'CONSTANT': do_something(); break; case 'GLOBAL': case 'GLOBAL1': do_something(); // Fall through default: { do_something(); } }