[英]Best way to address several type of users in PHP/MySQL
我在寻找这样的东西:
<?php
if($condition1 == 'a' && $condition2 == 'a' && $condition3 == 'a'){
//echoing some HEREDOCS here
}
if($condition1 == 'a' && $condition2 == 'a' && $condition3 == 'b'){
//echoing some HEREDOCS here
}
if($condition1 == 'a' && $condition2 == 'b' && $condition3 == 'a'){
//echoing some HEREDOCS here
}
if($condition1 == 'a' && $condition2 == 'b' && $condition3 == 'b'){
//echoing some HEREDOCS here
}
?>
我有7个条件和几十个组合。 我想知道这是解决每种独特用户类型的正确方法,还是可以有更好的方法?
每个组合的HEREDOCS与其他组合完全不同。
带有连锁键的开关可能是您的答案:
switch ($condition1.":".$condition2.":".$condition3){
case "a:a:a":
//echoing some HEREDOCS here
break;
case "a:a:b":
//echoing some HEREDOCS here
break;
case "a:b:a":
//echoing some HEREDOCS here
break;
case "a:b:b":
//echoing some HEREDOCS here
break;
}
或者您也可以创建一个消息映射
$messages = array(
"a:a:a"=>"Docs a:a:a",
"a:a:b"=>"Docs a:a:b",
"a:b:a"=>"Docs a:b:a",
"a:b:b"=>"Docs a:b:b",
);
echo $messages[$condition1.":".$condition2.":".$condition3];
您可能正在寻找switch
操作员。
就您的设计而言,您可能希望将每个人的文本存储在数据库中并与用户一起提取!
我总是喜欢设计我的代码来避免这种情况。 首先尝试定义一个线性的情况列表,例如:
<?php
if($condition1 == 'a' && $condition2 == 'a' && $condition3 == 'a') $user_type = 1;
elseif($condition1 == 'a' && $condition2 == 'a' && $condition3 == 'b') $user_type = 2;
elseif($condition1 == 'a' && $condition2 == 'b' && $condition3 == 'a') $user_type = 3;
elseif($condition1 == 'a' && $condition2 == 'b' && $condition3 == 'b') $user_type = 4;
?>
只是不要忘记覆盖所有可能的组合,否则所有ifs可能会失败,使$user_type
未定义。
稍后,当您想要打印某些内容或根据用户类型采取任何操作时,只需执行一个开关/案例:
switch($user_type)
{
case 1:
//echoing some HEREDOCS here
break;
case 2:
//echoing some HEREDOCS here
break;
}
一般的想法是只处理一次复杂的事情,以避免在代码周围复制复杂的逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.