繁体   English   中英

在PHP / MySQL中解决几种类型用户的最佳方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM