Ich möchte einen Wert berechnen, der von unten nach oben übertragen wird.Wie rekursiv berechnen von unten nach oben mit PHP?
Zum Beispiel aus dem Bild oben, habe ich diesen Zustand A, B, C, D, E unter Brunei Land, dass jeder Nennwert von 6,4,4,3,3 haben.
Um den Wert zu berechnen, muss ich den gesamten Wert plus und dividieren durch die Anzahl der Zustände.
(6 + 4 + 4 + 3 +3)/5 = 4
Der Bewertungswert nur auf der Ebene vorhanden, und nach berechnen wird es zu seiner Mutter bringen wird, werden summierte und dividiert durch die Anzahl der Kinder.
Meine aktuelle Lösung verwenden geschachtelte for-Schleife, aber es funktioniert nur, wenn ich die genaue Tiefe der Hierarchie kenne. Wenn ich also WORLD zu einem Kind des PLANETS hinzufüge, muss ich manuell eine weitere geschachtelte For-Schleife hinzufügen, um die Bewertung zu berechnen, die nicht sehr elegant ist. Ich möchte die aktuelle Lösung in eine dynamischere Lösung umwandeln.
Blank Funktion:
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
Aktuelle Lösung:
//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;
}
}
Können Sie hinzufügen ein 'var_dump()' der Eingabedaten? Und warum gibt es einen fest codierten Variablenwert in Ihrer inneren Schleife? – jeroen
@jeroen hi der harcode möchte nur den rating value zeigen, für var_dump() kann ich tatsächlich den Wert bekommen, den ich mit der obigen Beispiellösung haben möchte, aber es ist nicht sehr elegant, da ich manuell eine weitere for-Schleife hinzufügen muss ist andere Eltern existieren –
Was ist Ihr erwarteter Wert? Suchen Sie nach $ total_country_achievement für ein bestimmtes Land oder nach einem Array aller Länderwerte oder nach dem Weltwert oder dem gesamten Baum? –