【发布时间】:2022-11-25 21:57:04
【问题描述】:
我有一个数组如下:
$array = [
[
'result' => null,
'weight' => 50,
'children' => [
['result' => 5, 'weight' => 50, 'children' => []],
['result' => 5, 'weight' => 50, 'children' => []]
]
],
[
'result' => 3,
'weight' => 50,
'children' => []
],
];
我想要实现的是运行一个函数,例如:
function calculateScores(&$array)
{
}
calculateScores($array);
得到想要的结果:
$array = [
[
'result' => 5,
'weight' => 50,
'children' => [
['result' => 5, 'weight' => 50, 'children' => []],
['result' => 5, 'weight' => 50, 'children' => []]
]
],
[
'result' => 3,
'weight' => 50,
'children' => []
],
];
所以基本上,有孩子的条目通过将孩子的结果和权重相乘来计算他的分数。在给定的示例中,这将是:50% *5 + 50% + 5。
所以,基本上。如果一个条目有孩子,它的分数必须通过将结果乘以这些孩子各自的权重来计算。
由于 $array 可以有多个级别,递归函数可以完成这项工作。
但是,我很难想出一个方法。我尝试了几个想法但没有成功。
【问题讨论】:
-
你可以发布你的尝试吗?
-
嗨,我尝试了一个带有一些 if 语句的循环,但每件事或多或少都会导致计算器溢出。从来没有真正需要使用引用编写递归函数(我想这一定是方法)。很难过这个。
-
AKA
result是如何计算分数的 -
结果来自一个单独的函数(为简单起见,我将其缩短)。在给定的计算条目分数的示例中,相应的孩子将乘以他们的权重和结果,对于给定的示例,这将是 50% * 5 + 50% * 5。
-
找到了一种按预期工作的解决方案。如果您有进一步的想法,请随时发表评论。