0

因此,我试图更好地了解 switch 在未设置数组时的作用以及是否应该使用isset()和/或default:

例如,我目前正在使用的代码:

$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;
    }

}

注意:我知道break;没有正确的缩进(应该如下),但这是我喜欢在switch().

注意2:我只是在审查我的代码以修复错误并改进它,同时更好地了解应该如何正确实现/使用事物

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

所以我的问题是,我应该添加额外的default并删除if()还是继续使用它,if()因为它没有引起任何问题?两者都使用没有任何意义!

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

3 回答 3

1

default在检查所有先前的比较后将选择该选项。如果默认将是最常见的选择并且代码将被大量执行,我认为您应该坚持使用 if 子句,并且您不必相信任何自动优化来节省您的处理器时间。

于 2012-08-23T13:12:15.083 回答
1

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.

于 2012-08-23T13:13:02.767 回答
0

这是个人喜好,但我个人会删除 if 语句并将默认值添加到 switch 中。

这背后的主要原因是因为如果你像刚才那样使用它(使用 if 语句),并且$parameters['sort']等于你在 switch 中定义的 3 以外的东西,那么你就会遇到问题。而如果定义了默认值,那么在这些情况下,它将始终知道默认值是什么。

于 2012-08-23T13:11:32.517 回答