我正在尝试学习如何使用PHP switch语句。我想要做的是检查用户角色ID。
我是否正确形成这一点,我可以突破案例2,因为我不希望他们为编辑做任何事情。
switch ($user_data->role_id)
{
// User
case 1:
$user_data->characters = $this->character->get_many_by('user_id', $user_id);
break;
// Editor
case 2:
break;
// Admins
case 3:
$user_data->characters = $this->character->get_many_by('user_id', $user_id);
break;
// Webmaster
case 4:
$user_data->characters = $this->character->get_all();
break;
}
答案 0 :(得分:3)
您可以删除案例2并合并1& 3因为它们是相同的并且添加默认值来打破
switch ($user_data->role_id){
// User
case 1:
// Admins
case 3:
$user_data->characters = $this->character->get_many_by('user_id', $user_id);
break;
// Webmaster
case 4:
$user_data->characters = $this->character->get_all();
break;
default:
break;
}
答案 1 :(得分:1)
如果$user_data->role_id
为2
(编辑),您不希望发生任何事情,那么您可以取出case 2: break;
代码。
否则,您的switch
声明对我来说很好!
case 1: case 3:
$user_data->characters = $this->character->get_many_by('user_id', $user_id);
break;
答案 2 :(得分:1)
对我来说似乎很好。 对于案例2,您应该使用默认值!
switch ($user_data->role_id)
{
// User
case 1:
$user_data->characters = $this->character->get_many_by('user_id', $user_id);
break;
// Admins
case 3:
$user_data->characters = $this->character->get_many_by('user_id', $user_id);
break;
// Webmaster
case 4:
$user_data->characters = $this->character->get_all();
break;
default:
break;
//Editor and all the other non specifed
}
因此默认情况适用于您之前未提及的所有情况。
答案 3 :(得分:1)
我最喜欢Class'的回答。但是,这是一种典型情况,允许您的开关占用更多空间以便清晰。您已定义用户角色,虽然用户和管理员可能有共同点,但将来可能不会。案例2现在没用,但可能会在以后。
我会添加默认值:中断也是为了完整性。 我的回答:
switch ($user_data->role_id) {
case 1: // User
$user_data->characters = $this->character->get_many_by('user_id', $user_id);
break;
case 2: // Editor
break;
case 3: // Admin
$user_data->characters = $this->character->get_many_by('user_id', $user_id);
break;
case 4: // Webmaster
$user_data->characters = $this->character->get_all();
break;
default:
break;
}