Websiteentwicklung: PHP: Schleifen

Aus Wikibooks

Neben einfachen Abfragen kann man in PHP auch mit Schleifen arbeiten, d.h. etwas wird so lange ausgeführt, bis eine Bedingung erfüllt oder nicht mehr erfüllt (je nach Schleifenart) ist.

While-Schleifen[Bearbeiten]

Ein while-Schleife wiederholt den in geschweiften Klammern enthaltenen Codeblock solange, wie die angegebene Bedingung wahr (also true) ist.

Eine while-Schleife sieht zum Beispiel so aus:

 <?php
 $zahl = 0; // While-Schleife beginnt mit 0
 while ($zahl != 100) {
     echo $zahl . ', ';
     $zahl++;
 }
 ?>

Die Schleife überprüft, ob $zahl != 100 ist. Wenn ja, wiederholt sie die Anweisungen in den geschweiften Klammern, die bewirken, dass der Inhalt von $zahl ausgegeben wird und $zahl um eins erhöht wird.

Wenn $zahl den Wert 100 enthält, ist die Bedingung "$zahl != 100" falsch und die Schleife wird abgebrochen.

Do-While-Schleifen[Bearbeiten]

Syntax einer Do-While-Schleife:

 do {
     ausführungsblock
 } while (bedingung);

Hier ein Beispiel für eine Do-While-Schleife:

 <?php
 $zahl = 0;
 do {
     echo $zahl . ', ';
     $zahl++;
 } while ($zahl != 101); 
 ?>

Diese Schleife gibt die Zahlen von 0 bis 100 aus. Im Gegensatz zur While-Schleife wird hier zuerst die Variable ausgegeben und hinterher überprüft, ob 100 erreicht wurde. Das heißt: Auch, wenn man die Variable am Anfang gleich auf hundert setzen würde, würde trotzdem "100" ausgegeben werden. Die Do-While-Schleife sollte man also benutzen, wenn die Befehle mindestens einmal ausgeführt werden sollen. Oft kann man aber beide While-Schleifen verwenden.

For-Schleifen[Bearbeiten]

Neben While-Schleifen gibt es auch For-Schleifen. Diese sind ähnlich aufgebaut.

  for(Initialisierung; Bedingung; Aktualisierung) {
    Befehle
  }

Als erstes wird bei "Initialisierung" eine Variable mit einem Wert belegt. Bei "Bedingung" wird geprüft, ob die Bedingung wahr ist, wenn ja wird die Schleife wiederholt, wenn nicht beendet. "Aktualisierung" wird nach jedem Durchlauf aufgerufen.

Dazu ein Beispiel

 <?php
 for ($zahl = 0; $zahl < 100; $zahl++) {
     echo $zahl . ', ';
 }
 ?>

Auch diese Schleife gibt die Zahlen 0 bis 99 zurück.

Foreach-Schleifen[Bearbeiten]

Um ein Array zu durchlaufen, gibt es die Foreach-Schleife.

Eine foreach-Schleife sieht folgendermaßen aus: foreach($array as $aktuelles_element) oder bei Assoziativen Arrays foreach($array as $eintrags_name => $aktuelles_element)

Beispiel

 <?php
 $my_array = array(
     'wert1' => 'PHP',
     'wert2' => 'ASP',
 );
 foreach($my_array as $key => $value) {
     echo $key.' --> '.$value.'<br />';
 }
 ?>

Ausgabe:

   wert1 --> PHP
   wert2 --> ASP

Verwendung der verschiedenen Typen[Bearbeiten]

(Do-)While-Schleifen werden meistens verwendet, wenn zu Beginn der Schleife nicht klar ist, wie oft diese durchlaufen werden soll. Dies ist z.B. bei MySQL-Abfragen der Fall. Meist wird in der Bedingung überprüft, welchen booleschen Wert (d.h. true oder false) eine Variable oder Funktion zurückliefert. For-Schleifen werden dagegen nur verwendet, wenn die Anzahl der Durchläufe klar ist. Foreach-Schleifen werden ausschließlich zum durchlaufen eines Arrays verwendet. In Versionen vor PHP 4, in denen es die Funktion noch nicht gab, wurde eine While-Schleife mit einer speziellen Bedingung benutzt:

  <?php
    $array = array("foo" => "bar", "some" => "thing"); 

    foreach($array as $key => $value)
      echo $key." -> ".$value."\n"; 

    while(list($key, $value) = each($array))
      echo $key." -> ".$value."\n";
  ?>

Beides ergibt das selbe Ergebnis:

foo -> bar some -> thing

Da es heute nur noch wenige Webserver gibt, die eine Version von PHP 3 installiert haben, wird normalerweise der einfachere Weg mittels foreach() gewählt.