用PHP编写多规则矩阵算法

au9on6nz  于 2023-06-28  发布在  PHP
关注(0)|答案(1)|浏览(106)

我试着用PHP为这个矩阵写一个算法:

  • “风险概况”为1至5。
  • “依从性得分”为0至5。
  • 然后将分数绘制在矩阵中,并给出频率结果(以月为单位)。
  • 频率结果需要在RAG系统中按滑动比例进行颜色编码,高/红色到低/绿色。
  • 然后,每个频率需要被给予对应的标签,例如高/差

有没有一个简单/优雅的方法,你可以推荐?
频率分数似乎不符合逻辑计算。
我从这个方法开始…

//2months
if($riskScore == 1 && $complianceScore == 0 || $riskScore == 2 && $complianceScore == 0 || $riskScore == 1 && $complianceScore == 1)
{
    $totalRiskBg = "text-bg-danger";
    $label= "VERY HIGH / POOR";
    $frequency = "2 months";   
}  
//4 months
...
//6months
...

等等,但意识到标签不能都归在一个规则下。

nzkunb0c

nzkunb0c1#

频率是静态值,无需计算。
我们可以将它们存储在一个数组中,然后使用索引检索我们想要的值:

// you'll have to add more data to cover all the cases
$data = [
    0 => [1 => 2, 2 => 2, 3 => 4, 4 => 4, 5 => 6],
    1 => [1 => 2, 2 => 4, 3 => 6, 4 => 6, 5 => 12],
];

$compliance = 0;
$risk = 2;
// retrieve the value
$frequency = $data[$compliance][$risk];

printf(
    'compliance %d and risk %d = %d months',
    $compliance, $risk, $frequency
);

print PHP_EOL;

$compliance = 1;
$risk = 5;
$frequency = $data[$compliance][$risk];

printf(
    'compliance %d and risk %d = %d months',
    $compliance, $risk, $frequency
);

输出:

compliance 0 and risk 2 = 2 months
compliance 1 and risk 5 = 12 months

Try it online
对于颜色,它取决于月份数,因此您可以存储每个不同值(2,4,6 ......)的颜色。月数,然后从月数中检索它。

相关问题