Problem mit If-Abfrage
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ahnung
anstelle
aufruf
auswahl
bedingung
beitrag
besseren verstndnis
besserung
chatter
dan
datei
editor
fehler
funktion
geschweifte klammer
hochladen
logik
nummer
schleifen
zusatz
-
Ich habe ein Problem mit einer If-Abfrage in einer for Schleife. Bei $i == 10 sollte er eigentlich den 1. If-Teil ausgeben, aber es kommt immer nur der 2. Teil. Ich kann leider keinen Fehler bei der Abfrage finden.
function ersetzer($text) { for ($i=1; $i<11; $i++) { echo $i.\"<br />\"; if ($i == 1) { $text = str_replace (\"[auswahl$i]\", \"\\\\n\\\"; if ({f$i}!= \\\"\\\") {echo \\\"\", $text); } else{ $text = str_replace (\"[auswahl$i]\", \"if ({f$i}!= \\\"\\\") {echo \\\"\", $text); } if ($i == 10) { $text = str_replace (\"[auswahlende$i]\", \"\\\";}//$i echo \\\"\", $text); } else { $text = str_replace (\"[auswahlende$i]\", \"\\\";}//$i\", $text); } return $text; } }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ziemlich undurchsichtlich mit den ganzen backslashs aber müsste hier: str_replace (\\\"[auswahlende$i]\\\", \\\"\\\\\\\";} nicht die geschweifte klammer weg?
wäre net wen du mal die php-datei als txt-datei hochladen könntest, zum besseren verständnis.
mfg kalimor -
Wegen den ganzen \\ kann ich leider nichts machen, vielleicht wird das Problem bei Lima doch mal behoben. Die geschweifte sollte eigentlich kein Problem sein, da es ja richtig ersetzt wird, nur wird bei $i == 10 der falsche If-Teil aufgerufen(der 2., der nur bei $i == 1-9 sein sollte).
-
@kalimor Es ist nicht mehr als die Funktion. Über $text wird ein Teil eines Scriptes eingefügt wo eben die entsprechenden Stellen ersetzt werden sollen.
@tct Ich glaube du hast das falsch verstanden. Die If-Abfrage ist ja in einer Schleife wo irgendwann alle Zahlen von 1-10 durchlaufen werden. Das Problem ist nur dass das If irgendwie nicht richtig geht.
@shandris Genau das meine ich.
Es sollte ja auch funktionieren, die Echo-Ausgabe zeigt auch alle Zahlen aber das if reagiert nicht drauf. Die erste If-Abfrage ($i == 1) funktioniert aber richtig. Liegt es vielleicht an der 10 selbst? Hatte da mal ein Problem dass bei einer anderen Funktion die 1 normal bei 1 und auch bei 10 gefunden hat und beide ersetzt hat([auswahl1] und [auswahl1]0 kam dabei raus). Habe das gelöst indem ich die Zahlen eindeutig mit einem Zusatz gekennzeichnet hatte. -
Kann es sein, dass dein $text einfach genauso angezeigt wird, wie wenn es nicht die Zahl 10 ist?
Denn ich habe es jetzt mal mit deinem Code versucht, aber den $text mit eindeutigen Buchstaben ersetzt.
<? for ($i=1; $i<11; $i++) { echo $i.\"<br />\"; if ($i == 1) { echo \"x\"; } else{ echo \"y\"; } if ($i == 10) { echo \"a\"; } else { echo \"b\"; } } ?>
Wenn dur dir das also mal auf http://shandris.lima-city.de/a.php anschaust, siehst du genau, dass bei Nummer 10 anstelle des b ein a angezeigt wird.
Beitrag geändert: 11.9.2007 17:44:37 von shandris -
Kann es sein, dass dein $text einfach genauso angezeigt wird, wie wenn es nicht die Zahl 10 ist?
Ja genau so ist es. $i zählt zwar bis 10(erreicht das wie bei deinem Script auch) aber If führt trotzdem bei 10 den falschen(2.) Teil aus.
if ($i == \"10\" ) brachte auch keine Besserung.
Beitrag geändert: 12.9.2007 0:05:28 von chatter -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage