我想计算一个从底部到顶部结转的值。如何使用PHP从下到上递归计算?
例如从上面的图像,我有这样的状态A,B,C,d,文莱国家下Ë各自具有的6,4,4,3,3等级值。
要计算值,我需要加上所有的值并除以状态数。
(6 + 4 + 4 + 3 + 3)/ 5 = 4
只能在状态电平,计算后它将被被弹出到他的父母,由求和并除以该评级值孩子的数量。
我目前的解决方案使用嵌套for循环,但它只适用于我知道层次结构的确切深度。因此,如果我添加WORLD成为PLANET的子项,我需要手动添加另一个嵌套的for循环来计算评分,这不是很优雅。我期待将当前的解决方案转换为更具动态性的解决方案。
空白功能:
function getRating($place_id){
//do other things
//get ratings from all states in the country, summed and divide by the number of states
//return result of average rating
}
$world_id = 1;
$asia_id = 3;
$brunei_id = 7;
getRating($world_id);
//expected result : 5
getRating($asia_id);
//expected result : 4
getRating($brunei_id);
//expected result : 4
目前的解决方案:
//calculate continent rating
foreach ($subcontinents as $key => $subcontinent) {
//calculate sub-continent rating
foreach ($countries as $key => $country) {
//calculate country ratings
$rating_count = sizeof($state_ratings);
$total_country_achievement = 0;
foreach ($state_ratings as $key => $state_rating) {
$total_rating_achievement = 0;
$state_achievement = $state_rating->value;
$total_rating_achievement = $total_rating_achievement + $state_achievement;
}
$total_country_achievement = $total_rating_achievement/$rating_count;
}
}
你可以添加输入数据的'var_dump()'?为什么你的内部循环中有一个硬编码的变量值? – jeroen
@jeroen hi harcode只是想说明额定值,对于var_dump()实际上我可以使用上面的示例解决方案获得我想要的值,但它不是很优雅,因为如果需要手动添加另一个for循环其他父母是否存在 –
您的期望值是多少?您是在寻找特定国家的$ total_country_achievement,还是寻找所有国家价值的数组,或者您只是追求世界价值或整个树? –