anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Verzweiflung an der while-Schleife https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=4742 |
Seite 1 von 1 |
Autor: | Taikun14 [ Fr 19 Dez, 2008 12:44 ] |
Betreff des Beitrags: | Verzweiflung an der while-Schleife |
Hallo, ich möchte kurz beschreib was ich vorhabe. Ich möchte aus einer Tabelle Werte auslesen und diese via while in ein Array packen, so dass diese beide genau den gleichen Wert aufeinander haben, wie es in der Tabelle ist. Soweit passt das Ganze auch. Per Zufall gibt er mir dann einen Namen mit dem Zugehörigen Wert an. Nun will ich genau diesen Wert ( $wert1 ) mit einem anderen Wert ( $wert2 ) vergleichen und prüfen ob $wert2 kleiner als $wert1 ist. Das Problem hierbei ist, dass ich für $wert eins einfach immer 0, oder nichts bekomme, setze ich das Ganze in die while Schleife, dann funktioniert der Zufall nicht mehr. Ich bin langsam ratlos und ich bin mir sicher, dass ich einfach den Wald vor lauter Bäumen nicht sehe und die Lösung ganz leicht ist. >.< Der hier angegebene Code ist jetzt nur aus Spielerei entstanden, es kann also sein, dass für euch da unverständliches Zeug steht. Ich hatte schon etliche Versuche gestartet ( ausserhalb von while, ohne $i1=0 usw., die Abfrage in der for Schleife... ), aber ich poste den jetzt einfach mal hier, um eine kleine Überblickshilfe zu schaffen: PHP: $i1=0;
while ($row1 = db_fetch_assoc($res1)){ $kraut[$row1['skill']] = $row1['kraut']." . ".$row1['skill']; $a = $kraut[array_rand($kraut)]; for ($i=0; $i<$row['skill']; $i++){ } if($row['skill']<$row1['skill']){ output(" ".$row['skill']." ist kleiner als ".$row1['skill']." "); }else{ output(" ".$row['skill']." ist größer als ".$row1['skill']." ".$a." "); } $i1++; if($i1 === 1) { break; } } |
Autor: | Jenutan [ Fr 19 Dez, 2008 14:07 ] |
Betreff des Beitrags: | Re: Verzweiflung an der while-Schleife |
hmm, kann es sein, dass du ein wenig den Überblick in den Schleifen verloren hast...? $this->bbcode_second_pass_code('', '$i1 = 0; while (...) { ... $i1++; // Welchen Wert hat nun $i1? if ($i1 === 1) { break; // Und was war nochmal die Bedingung, dass die (while-)Schleife vorzeitig verlassen wird? } }') Da wundert's mich nicht, dass die while-Schleife nicht wie gewollt zu Ende läuft^^ Gruß |
Autor: | -DoM [ Fr 19 Dez, 2008 15:13 ] |
Betreff des Beitrags: | Re: Verzweiflung an der while-Schleife |
Also wenn ich mir den Schnipsel anschaue, fällt mir noch auf, dass nur "$row1" mit Daten gefüllt ist, aber "$row" nicht.... Das würde erklären warum du in der einen Variablen keine Daten hast zum vergleichen mit der anderen.... Das "break" ist glaube ich nur da um den negativ verlaufenden Test abzubrechen um nicht in das Timeout der Scriptlaufzeit zu kommen.... Um ein normales Array zu durchlaufen, würde ich anstelle einer festen "for"-Schleife doch (foreach) nehmen: PHP: $ausgabe = 'Wertevergleich war nagativ.';
if (isset($array_1) && is_array($array_1)){ foreach ($array_1 as $array_key => $array_value){ if ($array_value == $row['wert1']){ $ausgabe = 'Wertevergleich war positiv.'; break; //Arrayschleife beenden } } } output($ausgabe); |
Autor: | Taikun14 [ Fr 19 Dez, 2008 15:53 ] |
Betreff des Beitrags: | Re: Verzweiflung an der while-Schleife |
Danke erstmal für die Antworten! ![]() @dom die Daten werden am Anfang schon gefüllt, das ist kein Thema. Ich versuche einfach mal deine Lösung *g* @jenutan Überblick verloren... hmm.. teils, teils, da ich soviel rumprobiert hatte. ![]() EDIT: Hab es nun endlich hinbekommen. Hab es via dowhile und explode gemacht. ![]() |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |