Stackoverflow社区的好日子!
我想知道以下问题的最佳做法:
我需要构建一个系统,它将根据几个输入参数返回特定值(比如伙伴ID),例如伪代码:
if GENDER == FEMALE and COUNTRY == GERMANY and AGE BETWEEN 21 and 30
then return PartnerA
if GENDER == FEMALE and COUNTRY == GERMANY and AGE BETWEEN 31 and 40
then return PartnerB
if GENDER == MALE and COUNTRY == GERMANY
then return PartnerC
if GENDER == MALE and COUNTRY == FRANCE
then return PartnerA
正如您所看到的那样,对于某些参数,可能没有特殊值,在这种情况下,系统应该回退到最接近的可用变量或至少恢复到默认值。此外,参数列表可以随着时间的推移而增长(即,有人可以随时添加另一个维度)。
我最好的想法是使用多维数组并逐个遍历参数:
$map[COUNTRY][GENDER][AGE_RANGE] = VALUE;
if (isset($map[$country][$gender][$age_range])) {
return $map[$country][$gender][$age_range];
} else {
// traverse over each level of the $map array, testing each of them as "input parameter" -> "DEFAULT parameter value"
// In the worst scenario I will end with $map[DEFAULT][DEFAULT][DEFAULT] value.
}
但我不喜欢这个算法,因为它似乎太无效了:/而且,当引入新参数时会出现问题(在哪里插入新的维度?我们应该怎样重建阵列?)。
有没有人有更好的想法如何实施这样的系统?