多维参数图的最佳实践是什么?

时间:2014-11-12 14:39:24

标签: arrays algorithm multidimensional-array

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.
}

但我不喜欢这个算法,因为它似乎太无效了:/而且,当引入新参数时会出现问题(在哪里插入新的维度?我们应该怎样重建阵列?)。

有没有人有更好的想法如何实施这样的系统?

0 个答案:

没有答案