Problem mit Funktion (do-while)

pxlArtizzt

Erfahrenes Mitglied
Hi Leute, ich bastel nun schon seit Stunden an einer Funktion rum, aber ich komm auf keinen grünen Zweig :mad:

Erstmal die Funktion:

PHP:
function GetUnit($groesstes,$parts,$i) {
	do {
		if (($i * $parts) >= $groesstes) {
			return $i;
		}
	$i++;
	} while (($i * $parts) >= $groesstes);
}


Die Funktion brauche ich für ein Balkendiagramm, um die Einheiten festzustellen. Hierzu nehme ich den Balken, der am größten zu sein scheint ($groesstes), mein Diagramm hat $parts-Einteilungslinien (kann man sich vorstellen wie die roten Streifen aufm Millimeterpapier) - und die Einheitsgröße soll $i sein. Ich möchte, wenn $i * $parts >= $groesstes ist $i returnen. Aber es funktioniert nur bei manchen Aufrufen:

Beispiel:
bei GetUnit(17,18,0); bekomme ich wie gewollt $i = 1, bei GetUnit(19,18,0); aber gar nichts... wie kann das Die Schleife wird ja mind. 1 x durchlaufen, also müsste doch irgendeine Rückgabe stattfinden, oder?

Ich hatte es auch mal mit Rekursion probiert, aber da kam ähnlicher Schrott raus... *hiiilfeeee* :( Ich glaub, das ist meine 4. Version dieser (in meinen Augen viel zu simplen) Funktion *schäm*
 
STOOOPP...

entwarnung. ich hab meine Rekursions-Version nochma aufgegriffen... und es funktioniert. Hier die Funktion für alle interessierten ;)

PHP:
function GetUnit($groesstes,$parts,$i) {
	if ($i * $parts >= $groesstes) {
		return $i;
	} else {
		$i = $i + 1;
		return GetUnit($groesstes,$parts,$i);
	}
}

...mal wieder zu schnell gepostet *g*
 
Zurück