因此,我试图更好地了解在未设置数组时开关的操作方式,以及我是否应该使用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;
default
选项将在检查所有先前的比较后选择。如果默认将是最常见的选择,并且代码将被大量执行,我认为您应该坚持If子句,并且您不必相信任何自动优化可以节省处理器时间。
好吧,问题是如果在任何情况下都找不到值,你是否想这么做。如果没有,则可以跳过默认情况,但如果在未指定值的情况下仍有工作要做,则使用默认情况
但我必须说,使用默认情况是一种很好的做法,至少可以将错误/未指定的用法或打印错误记录到屏幕上。
这是我个人的偏好,但我个人会删除if语句并在开关中添加默认值。
这背后的主要原因是,如果您像刚才一样使用它(使用if语句),并且$parameters['sort']
等于您在交换机中定义的3以外的值,那么您就会遇到问题。然而,如果定义了默认值,那么在这些情况下,它总是知道默认为什么。