== Why is this an issue?

Nested ``++switch++`` structures are difficult to understand because you can easily confuse the cases of an inner ``++switch++`` as belonging to an outer statement. Therefore nested ``++switch++`` statements should be avoided.


Specifically, you should structure your code to avoid the need for nested ``++switch++`` statements, but if you cannot, then consider moving the inner ``++switch++`` to another function.

=== Noncompliant code example

[source,php]
----
switch($a) {
  case "foo":
    switch($b) { // Noncompliant
      case "bar":
        doSomething();
      break;
    }
  break;
}
----

=== Compliant solution

[source,php]
----
function handleFoo($foo) {
  switch($foo) {
    case "bar":
      doSomething();
    break;
  }
}

switch($a) {
  case "foo":
    handleFoo($b);
  break;
}
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
