PHP: höchste in 10er Schritten Zahl ausgeben?
ich habe einen string mit einer zahl. z.b. 69. will jetzt aber immer die nächst höchste mit 10er schritten ausgeben, also 60. bei 81 ist es 80 usw. wie geht das denn ?
3 Antworten
$i = 0;
$grenze = "81";
while ($i < $grenze) $i += 10;
print $i;
Nicht getestet, aber so in etwa. Ginge auch ohne Schleife einfacher so:
$zahl = "81";
$rest = $zahl % 10;
$i = $zahl - $rest;
print $i;
Das klappt, weil PHP so schön hin- und hercastet auch mit Strings.
Weil Du 69 und 81 als Beispiele angegeben hast. Wenn Du nicht flexibel genug bist, den Code jetzt auf Deine Bedürfnisse anzupassen (z.B. durch geeignetes Ersetzen der Beispieldaten), dann ist das ja nicht mein Problem ;-)
Hätte ich keinen Zahlenwert angegeben, hättest Du gefragt "Was ist $grenze" und "$zahl wird nicht gefunden - hä?". So kann es wenigstens ausgeführt werden.
Im ersten Beispiel muss es heißen
while ($i + 10 < $grenze) ...
Du hast einen String mit einer Zahl, wie Du selbst schon schreibst. Der String heißt im ersten Beispiel $grenze und im zweiten Beispiel $zahl. Mehr ist dazu auch nicht zu sagen.
ich habe einen string mit einer zahl. z.b. 69. will jetzt aber immer die nächst höchste mit 10er schritten ausgeben, also 60.
60 ist nicht die nächst höhere Zahl von 69. Das wäre nach Deiner Beschreibung 70. Ich denke was Du suchst ist die floor Funktion. Du teilst Deine Zahl durch 10, nimmst den floor, und multiplizierst mit 10:
$zahl = 69;
$zahl = $zahl / 10; # ergibt 6.9
$zahl = floor($zahl); # ergibt 6
$zahl = $zahl * 10; # ergibt 60
$zahl = 81;
$zahl = $zahl / 10; # ergibt 8.1
$zahl = floor($zahl); # ergibt 8
$zahl = $zahl * 10; # ergibt 80
Alex
Geht das auch?
Was meinst Du mit "auch"? Das ist doch exakt das, was ich geschrieben habe; nur zusammengefasst in einer (für einen Laien unübersichtlicheren) Zeile.
Supi das war das was ich wissen wollte. War mir nicht sicher ob ichs kapiert hab. Danke ein Anfänger
Sollte mit einer While schleife funktionieren. Ich kann PHP leider nicht so gut und kann dir das nur in Pseudo-Code hinklatschen:
while(deine Zahl % 10 != 0)
deineZahl--;
Am ende ist deine Zahl deine gewünschte
Naja, wenn Du %10 rechnest, dann weißt Du doch schon, wieviel Du von der Zahl abziehen musst, um zum nächst kleineren ganzen Zehner zu kommen. Da ist die Schleife dann auch unnötig.
Jup. Hab ich dann auch gesehen. Ist Performance-mäßig bestimmt besser.
wieso die 81 ?? waren beispiele die ändert sich ständig