FOR-Schleife läuft nur einmal durch, obwohl mehrfach benötigt

Matze202

Erfahrenes Mitglied
PHP:
    if(is_array($this->page)){

      $a = count($this->page);
      echo $a;  // $a = 2
      for($i = 0; $i < $a; $i++){
        echo "-".$i; // $i bleibt nur 0
        $sql .= "'".$this->page[$i]."'";
        return "> ".$this->mysqli_wert($sql, 'page_name')." ";
      }
    }

Ich finde irgendwie den Fehler nicht, wieso trotz des $i++, die For-Schleife das $i nicht hoch zählt und dabei auch kein 2. mal durchläuft.

Ich hoffe, dass mir hier jemand helfen kann, den Fehler zu finden.

Gruß Matze202.

PS.: Ich weiß, der Code geht kürzer, aber ich habe den Code ausgebreitet um schon die Fehlerquelle besser überprüfen zu können und mit der while-Schleife versuchte ich es auch, aber leider mit dem selben Ergebnis.
 
Code:
array(2) {
  [0]=>
  string(3) "agb"
  [1]=>
  string(9) "impressum"
}

Also für mich sieht das auch unauffällig aus.
 
Hi, Danke dir @Bratkartoffel,

das war der Fehler gewesen und ich wusste bisher nicht, dass man aus FOR und WHILE Schleifen nichts mit ECHO und RETURN wiedergeben darf, da hab ich nun meine erste Erkenntnis aus diesem Problem. :)

Der Code sieht jetzt so aus:
PHP:
    if(is_array($this->page)){
      $a = count($this->page);
      echo $a;
      $output = NULL;
      for($i = 0; $i < $a; $i++){
        echo "-".$i;
        $sql .= "'".$this->page[$i]."'";
        $output .= "> ".$this->mysqli_wert($sql, 'page_name')." ";
      }
      return $output;
    }

Die Schleife wird nun endlich komplett durchlaufen, aber leider wird bei "$this->mysqli_wert($sql, 'page_name')" nur der 1. und nicht der 2. Wert ausgegeben.

Gruß Matz202.
 
Zudem
$i<$a
Wenn $a 1 ist, ist nur $i=0 kleiner.
Ergo
PHP:
for($i = 0; $i <= $a; $i++){

Danke für deinen Hinweis, aber mein Wert $a ist nicht 1 sondern 2 durch den count von $this->page, welcher die Werte vorgibt.

Daher brauch ich immer nur das < und nicht <=, weil ich $i gleich für den Key verwenden möchte.
 
PHP:
// Zeile 7 und 8
        $sql1 = $sql."'".$this->page[$i]."'";
        $output .= "> ".$this->mysqli_wert($sql1, 'page_name')." ";

Kleiner Fehler war noch in der Zeile 7, weshalb es immer nur den ersten Wert ausgab, alle weiteren wurden durch einen falschen SQL-CODE nicht wiedergegeben, weil sich ja der abzufragende Wert nicht ersetzte, sondern immer nur hinten dran hing. ;)

Danke nochmal @Bratkartoffel für die Erklärung, also wirkt sich das Return in Schleifen wie eine Ausgabe mit Exit für die Schleife aus.

Gruß Matz202.
 
Zurück