重构这些 if 语句系列的最佳方法是什么?

What is best way to refactor these series of if statements?

所以我有一堆带有单选按钮的问题,每个问题都有三个选项可供选择。我有一堆 If 语句(其中很多)根据每个问题的答案确定最终答案。

例如:

Question 1 : 
           a)
           b)
           c)

Question 2 : 
           d)
           e)
           f)

Question 3 : 
           g)
           h)
           i)

等等。

if语句如下: if ( 问题 1 == a || 问题 2 == f && 问题 3 == i )

如果我想以 if 语句的形式获取所有条件,这会花费太多 space 并且可能不是最佳做法。

重构所有这些 if 语句的最佳方法是什么?

如果每一个选择组合都会导致一个独特的结果,那么您实际上是在查看一个 n 维矩阵。简而言之,将每个选项都视为数组路径中的一个步骤:

$outcomes = array(
    'a' => array(
        'd' => array(
            'g' => 'Outcome 1',
            'h' => 'Outcome 2',
            'i' => 'Outcome 3'
        ),
        'e' => array(..),
        ..
    'b' => array(..),
    ..
);

echo 'The outcome is: ', $outcomes[$question1][$question2][$question3];

这是否真的是实现它的最佳可能方式值得怀疑,在不了解您的逻辑的情况下我们不知道。

我最终用 switch 语句和函数重构了它。我敢肯定,我可以通过更优雅的方式来做到这一点。如果我找到方法,将更新答案。