anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 10 Jun, 2025 06:10

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Verzweiflung an der while-Schleife
BeitragVerfasst: Fr 19 Dez, 2008 12:44 
Offline
Großmeister
Großmeister

Registriert: Fr 01 Jul, 2005 18:41
Beiträge: 484
Wohnort: Saarbrücken
Geschlecht: Männlich
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;

}


}


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 19 Dez, 2008 14:07 
Offline
Profi
Profi

Registriert: Mo 25 Dez, 2006 21:45
Beiträge: 109
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ß

_________________
26. April 2007 - 8. Juni 2007 auf http://www.dragonfantasies.de
28. Juli 2007 - 31. Dezember 2008 auf http://www.atrahor.de

LoGD ist das programmierte Grauen!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 19 Dez, 2008 15:13 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
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);

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 19 Dez, 2008 15:53 
Offline
Großmeister
Großmeister

Registriert: Fr 01 Jul, 2005 18:41
Beiträge: 484
Wohnort: Saarbrücken
Geschlecht: Männlich
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. ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 20 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum