用户输入后给出响应的静态算法

时间:2015-01-06 02:22:41

标签: php algorithm

我有2个阵列:F of length 4 and S of length 25
用户可以从上面两个阵列中选择任何这些元素中的任何一个用于例如从F中选择任意2和从S中选择10个。根据用户选择我已经从我的另一个array R of length 100给用户做出响应。 我尝试制作if else但是在创建之后已经筋疲力尽了 100多个。 那么有没有更好的方法呢?

我的目标是为用户提供一个来自数组R的索引。

PS。没有AI(人工智能)参与。

EDIT 目前我所做的是:

if(in_array(1,$F) && in_array(12,$S)){
   return $R[3];
}else if(in_array(1,$F) && in_array(17,$s)){
   return $R[91];
}else if(in_array(2,$F) && in_array(1,$F) && in_array(21,$S) &&  in_array(25,$S)){
   return $R[23];
}else if(in_array(3,$F) && in_array(21,$S) && in_array(7,$S)){
   return $R[17];
}..........

1 个答案:

答案 0 :(得分:0)

这样的东西?创建像@zerkms这样的地图。

function getRKey(array $f, array $s)
    {
    // values map by order
    $map_r_array = [
        3 => ['f' => [1], 's' => [12]],
        91 => ['f' => [1], 's' => [17]],
        23 => ['f' => [1, 2], 's' => [21, 25]],
        17 => ['f' => [3], 's' => [7, 21]],
    ];
    foreach ($map_r_array as $key => $check)
        {
        // check one by one.
        if (!array_diff($check['f'], $f) && !array_diff($check['s'], $s))
            {
            return $key;
            }
        }
    return null;
    }

$f = [1, 2, 3];
$s = [7, 21];

var_dump(getRKey($f, $s)); // int(17)