【问题标题】:Best way to address several type of users in PHP/MySQL在 PHP/MySQL 中解决多种类型用户的最佳方法
【发布时间】:2013-07-06 02:23:09
【问题描述】:
我正在寻找这样的东西:
<?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都与其他组合完全不同。
【问题讨论】:
标签:
php
html
conditional-statements
【解决方案1】:
您可能正在寻找switch 运算符。
就您的设计而言,您可能希望将每个人的文本存储在数据库中并与用户一起提取!
【解决方案2】:
我总是喜欢设计我的代码来避免这种情况。尝试首先定义一个线性的情况列表,例如:
<?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;
?>
只是不要忘记涵盖所有可能的组合,否则所有 if 都可能失败,导致 $user_type 未定义。
以后,当你想打印一些东西,或者根据用户类型采取任何行动时,只需做一个 switch / case:
switch($user_type)
{
case 1:
//echoing some HEREDOCS here
break;
case 2:
//echoing some HEREDOCS here
break;
}
一般的想法是只处理一次复杂的事情,以避免在代码周围重复复杂的逻辑。
【解决方案3】:
带有连接键的开关可能是您的答案:
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];