数组未设置时php切换的行为

So, I'm trying to have a better understanding of how switch would act when an array is not set and if I should use isset() and/or default:

Example, of the code I'm currently using:

$parameters['sort'] = NULL;

if(isset($parameters['sort'])) {

    switch($parameters['sort'])
    {
        case 'relevance':
            $parameters['sort'] = 'rating';
        break;
        case 'published':
            $parameters['sort'] = 'updated';
        break;
        case 'views':
            $parameters['sort'] = 'viewCount';
        break;
    }

}

Note: I know the break; doesn't have the right indent (should be as below), but it's how I like using it in switch().

Note2: I'm just reviewing my code to fix bugs and improve it while making better sense of how things should be properly implemented/used

    case 'relevance':
        $parameters['sort'] = 'rating';
        break;

So my question is, should I add the extra default and remove the if() or continue using the if() as it didn't caused any problem? Using both wouldn't make any sense!

    default:
        $parameters['sort'] = '';
    break;

default option will be chosen after checking all prior comparisons. If default will be the most common choice and the code will be heavily executed, I think you should stick to the if clause, and you won't have to trust any auto optimizations to save you processor time.

This is personal preference, however I would personally go for removing the if statement and adding default into the switch.

The main reason behind this is because if you use it as you have just now (with the if statement), and $parameters['sort'] is equal to something other than the 3 you have defined in your switch, then you'll have problems. Whereas if a default is defined, then in these cases it'll always know what to default to.

Well, the thing is whether You want to do if value is not found in any of cases. If You don't, then You can skip default case, but if there is stuff to do even if value is not specified, then use default case.
But I must say, that using default case is good practice, at least logging error/unspecified usage or printing error to screen.