1

我正在寻找这样的东西:

<?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都与其他组合完全不同。

4

3 回答 3

2

带有连接键的开关可能是您的答案:

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];
于 2013-07-08T17:08:02.910 回答
1

您可能正在寻找switch运营商。

就您的设计而言,您可能希望将每个人的文本存储在数据库中并与用户一起提取!

于 2013-07-08T16:51:21.617 回答
1

我总是喜欢设计我的代码来避免这种情况。尝试首先定义一个线性的情况列表,例如:

<?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;
}

一般的想法是只处理一次复杂的事情,以避免在代码周围重复复杂的逻辑。

于 2013-07-08T17:07:57.033 回答