[php] Rechnen in einer for Schleife

djjlx

---???---
ID: 62937
L
9 Mai 2006
599
21
Hallo zusammen!

Ich bräuchte einen Denkanstoß :ugly:

Ich hab folgendes Problem:

Die variable $ladung = 1500;
Die variable $max_ladung = 1000;

$anzahl = $ladung / $max_ladung; // 1,5
$anzahl = ceil($anzahl); // = 2

Die Variable $anzahl gibt vor wie oft die FOR schleife durchlaufen soll in dem Fall 2 mal.

for ($a=0;$a<$anzahl;$a++)

Jetzt würde ich gerne das beim ersten durchgang von der Variable $ladung
wenn sie größer ist als $max_ladung , $max_ladung abgezogen wird.
// 1500 - 1000 = 500;
Beim zweiter durchgang sollte die variable $ladung dann nur mehr den Wert 500 beinhalten.
Da dieser Wert kleiner ist als $max_ladung soll hier auch nichts mehr abgezogen werden.
und gleich in die db eingetragen werden.

Ich hoffe ich konnte meinen gedankengang verständlich beschreiben.
Leider komm ich nun schon seit 4h nicht auf das richtige ergebniss.:(

LG
 
Hi,

PHP:
if($ladung > $max_ladung) {
  $ladung = $ladung - $max_ladung;
}
// DB-Abfrage

:think:

Oder hab ich dich falsch verstanden?
 
$ladung = 1500;
$max_ladung = 1000;

$anzahl = $ladung / $max_ladung; // 1,5
$anzahl = ceil($anzahl); // = 2

$rest_ladung = $ladung ;

for ($a=0;$a<$anzahl;$a++)
{
íf ( $rest_ladung > $max_ladung )
{ $rest_ladung = $rest_ladung - $max_ladung ;
// sonstige Verarbeitung ( z.B. volle Ladung in DB eintragen )
} // endif
else { // z.B. restLadung in DB eintragen
} // endelse
} // endfor
 
Hi,

PHP:
if($ladung > $max_ladung) {
  $ladung = $ladung - $max_ladung;
}
// DB-Abfrage

:think:

Oder hab ich dich falsch verstanden?
Ja war auch mein erster gedanke :)

$ladung = 1500;
$max_ladung = 1000;

$anzahl = $ladung / $max_ladung; // 1,5
$anzahl = ceil($anzahl); // = 2

$rest_ladung = $ladung ;

for ($a=0;$a<$anzahl;$a++)
{
íf ( $rest_ladung > $max_ladung )
{ $rest_ladung = $rest_ladung - $max_ladung ;
// sonstige Verarbeitung
} // endif
} // endfor
Hatte ich nach ca. 2 Stunden herumprobieren.
Problem ist das beim 2 Durchgang die anforderung für die if Stellung negativ ist und übersprungen wird und die $rest_ladung = $ladung ist.
:(
 
oh sorry, ich hatte meinen Beitrag nochmal angepasst während Du schon zitiert hast. Ich habe jetzt einen else Zweig in meinem Beispiel drinnen.
 
Ja aber da beim zweiten durchgang wird ja die if stellung übersprungen und die else stellung ausgeführt.
wie übergib ich in die else stellung die tatsächliche restliche ladung?

LG
 
Die steht zu diesem Zeitpunkt bereits in $rest_ladung.

Wohin willst Du die noch übergeben ?

Der Ablauf sieht ungefähr so aus:

$ladung = 1500;
$max_ladung = 1000;
$anzahl = $ladung / $max_ladung; // 1,5
$anzahl = ceil($anzahl); // = 2
$rest_ladung = $ladung ; // = 1500

Anfang "Schleife"
Ist $rest_ladung > $max_ladung // 1500 > 1000 *ja*
"then" Zweig:
$rest_ladung = $rest_ladung - $max_ladung; // = 500
...Eintrag in Datenbank mit maximaler Ladung...
Ende "if"
Ende "Schleife"
Anfang "Schleife"
Ist $rest_ladung > $max_ladung // 500 > 1000 *nein*
"else" Zweig
...Eintrag in Datenbank mit $rest_ladung... // $rest_ladung = 500
Ende "else"
Ende "Schleife"
Ende "programm"
 
Zuletzt bearbeitet: