Personally, I find the switch a lot more readable. Here's the reason:
if ($foo == 'bar') {
} elseif ($foo == 'baz') {
} elseif ($foo == 'buz') {
} elseif ($fou == 'haz') {
}
Condensed like that, you can easily see the trip up (be it a typo, or a honest difference). But with a switch, you know implicitly what was meant:
switch ($foo) {
case 'bar':
break;
case 'baz':
break;
case 'buz':
break;
case 'haz':
break;
}
Plus, which is easier to read:
if ($foo == 'bar' || $foo == 'baz' || $foo == 'bat' || $foo == 'buz') {
}
or
case 'bar':
case 'baz':
case 'bat':
case 'buz':
break;
From a performance standpoint... Well, don't worry about the performance. Unless you're doing a few thousand of them inside of a tight loop, you won't even be able to tell the difference (the difference will likely be in the micro-second range, if not lower).
Go for the method that you find the most readable. That's the important part. Don't try to micro-optimize. Remember, Premature Optimization Is The Root Of All Evil
...