【问题标题】: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];
      

      【讨论】:

        猜你喜欢
        • 2016-05-17
        • 1970-01-01
        • 2011-02-07
        • 2020-08-11
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 1970-01-01
        • 2018-07-31
        相关资源
        最近更新 更多