Desfois on a besoin de faire des else if, beaucoup. Personnellement, je trouve cette syntaxe peu pratique et peu lisible. Je lui preferre de loin un petit switch. Exemple: prenons le if suivant:

if ($foo) {
	foo();
} else if ($bar) {
	bar();
} else if ($foobar) {
	foobar();
}

Ca marche, mais c'est pas très esthétique. Avec un switch ça donne:

switch (true) {
	case $foo:
		foo();
	break;
	case $bar:
		bar();
	break;
	case $foobar:
		foobar();
	break;
}

Ok, c'est plus long à écrire, mais c'est quand même autrement plus lisible non ?

Pour ceux qui ne comprennent pas le principe, il est peut-être utile de revenir sur le principe du switch. La documentation nous informe que:

The switch statement is similar to a series of IF statements on the same expression.

Un switch classique (switch ($foo) { case 'bar': bar(); break; }) n'est donc rien d'autre qu'un if déguisé (if ($foo == 'bar') { bar(); }). On peut donc extrapoler et dire que switch effectue des if entre l'objet du switch ($foo) et l'objet des case ('bar'). Notre switch(true) de tout à l'heure peut donc s'interpréter comme un if (true == $foo), CQFD. A partir de là, il est possible de faire plein de choses avec un switch comme par exemple utiliser des fonctions dans les cases:

switch(true) {
	case isset($foo):
		do_something($foo);
	break;
	case isset($bar):
		do_something_else();
	break;
}

Bien sur, les exemples donnés ici sont triviaux, et il existe d'autres méthodes ((isset($foo) && do_something($foo)) || (isset($bar) && do_something_else($bar)); par exemple, mais il existe surement de meilleurs méthodes ;) pour traiter ces cas, mais ils montrent bien l'utilisation qu'on peut faire d'un switch.