jhbCMS - tutorial.bekaan.org

» erste Schritte
» Vorbereitung
» PHP
   » echo
   » Variablen
   » include
   » Array
   » POST und GET
   » math. Operationen
   » if else elseif
   » Schleifen
   » Datei-Operationen
   » suchen
   » ersetzen
   » Datum
   » eMail
   » Session
   » Inkrement- und...
   » ternärer Oper...
   » eigene Funktio...
   » RegExp
» MySQL
» weitere Hilfe


» PDF-download

Schleifen



for



Schleifen scheinen jedem Programmieranfänger am Anfang kompliziert. Daher wollen wir uns Diese hier mal näher anschauen.

Code:
for (ausdruck_a; ausdruck_b; ausdruck_c)
{
  Anweisung
}
                   


PHP bearbeitet die Schleife nun folgendermaßen. ausdruck_a wid zum Beginn der Schleife ausgeführt. Somit werden die ersten Fakten geschaffen. Aber die Anweisung in der Schleife wurde noch nicht begonnen! Nur, wenn ausdruck_b richtig (TRUE) ist wird die Anweisung in der Schleife gestartet. Hier liegt also das Geheimnis, wie man die Schleife beenden kann. Man muss nur versuchen an der gewünschten Stelle ausdruck_b falsch (FALSE) zu bekommen. Das kann man regeln, da zu jedem Ende ausdruck_c geprüft/ausgeführt wird.

Also noch mal im Ablauf:
1. ausdruck_a wird ausgeführt
2. wenn ausdruck_b gleich TRUE, also wahr beginnt die Schleife
3. ausdruck_c wird ausgeführt/geprüft

Anmerkung:
- Jeder Ausdruck könnte auch leer sein, aber dazu kommen wir später.
- Jeder Ausdruck wird durch ein Semikolon getrennt, damit PHP die einzelnen Ausdrücke unterscheiden kann.

Und nun ein einfaches Beispiel:
PHP-Code:
01
02
03
04
05
06
<?php
  
for($i=0;$i<17;$i=$i+1)
  {
    echo 
$i.'<br />';
  }
?>

Erklärung:
Die Variable $i wird gleich 0 gesetzt. Die for-Schleife überprüft, ob der Wert der Variable $i kleiner als 17 ist, wenn ja, dann wird die Schleife ausgeführt, wenn nicht - dann logischerweise nicht. mit jeder erfolgreich durchgelaufenen Schleife wird die Variable $i um 1 erhöht.
Der Wert der Variablen wird ausgegeben. Damit die einzelnen Werte noch unterscheidbar sind, wird ein Zeilenumbruch mit ausgegeben.

Profis würde es noch kürzer schreiben, aber es geht hier ersteinmal darum zu verstehen, wie die for-Schleife funktioniert.

Ich habe erwähnt, dass man jeden Ausdruck auch leer lassen könnte. Das scheint erst einmal sinnlos, aber es gibt Fälle (da es ja funktioniert), da macht es Sinn.

Die for-Schleife lässt sich nämlich auch mit einem
Code:
break;
                   
beenden.
Wenn nun also in der for-Schleife eine Überprüfung stattfindet (z.B. mit der if-Kontrollstruktur), so lässt sich gezielt die Schleife beenden.
Wenn nämlich angenommen der ausdruck_c leer ist, so würde PHP der Meinung sein, dass die Bedingung für die Ausführung der Schleife immer TRUE ist und die Schleife ewig ausführen. Eine Endlosschleife währe programmiert. Mit einem gezielten break könnte man dann die Schleife beenden.
ausdruck_a lässt sich auch außerhalb der Schleife definieren, natürlich vorher. Und ausdruck_c, welcher zum Ende der Schleife ausgeführt wird, kann man auch in der Schleife definieren.

Beispiel:
PHP-Code:
01
02
03
04
05
06
07
08
09
10
11
12
<?php
$i
=0;
for(;;)
{
  
// wenn $i groß genug, dann Schleife beenden:
  
if($i>35)
  {
    break;
  }
  
$i $i+1;
}
?>


Anmerkung:
- wenn die Schleife nur eine Anweisung enthält:
Code:
for(...;...;...)
{
  Anweisung   
}
                   


Dann kann man die Klammern { und } auch weglassen. Wenn aber mehr als nur eine Anweisung folgen sollen, dann muß diese unbedingt dort stehen!
Gleiches gilt auch für die if-Kontrollstruktur.

Damit könnte man das erste Beispiel so abkürzen:
PHP-Code:
01
02
03
04
<?php
  
for($i=0;$i<17;$i=$i+1)
    echo 
$i.'<br />';
?>




foreach


mit foreach ist es möglich in einem Array zu arbeiten.
Lies dazu auch:
:arrow: Was sind eigentlich Arrays?

Mit foreach ist es möglich ein Array zu durchlaufen.

Dafür erstellen wir uns zunächst ein Array, um es gleich zu zeigen, wie es funktioniert:
PHP-Code:
01
02
03
<?php
  $array_name 
array('eins''zwei''drei''vier''und''so''weiter');
?>


die Ausgabe erfolgt mit foreach. Hier wird jedes Element des Array durchlaufen und ausgegeben:
PHP-Code:
01
02
03
04
05
06
<?php
  $array_name 
array('eins''zwei''drei''vier''und''so''weiter');

  foreach (
$array_name as $wert_des_array)
    echo 
'Wert: '.$wert_des_array.'<br />\n';
?>


die Ausgabe sieht dann wie folgt aus:
Code:
Wert: eins
Wert: zwei
Wert: drei
Wert: vier
Wert: und
Wert: so
Wert: weiter
                   


Wenn nun noch interessiert, das wievielte Element nun welchen Wert hat - dem sei noch gesagt, dass es hierfür eine kleine Erweiterung gibt:
PHP-Code:
01
02
03
04
05
06
<?php
  $array_name 
array('eins''zwei''drei''vier''und''so''weiter');

  foreach (
$array_name as $wert_des_array => $value)
    echo 
'Schlüssel: '.$wert_des_array.'; Wert: '.$value.'<br />'."\n";
?>


die Ausgabe sieht dann wie folgt aus:
Code:
Schlüssel: 0; Wert: eins
Schlüssel: 1; Wert: zwei
Schlüssel: 2; Wert: drei
Schlüssel: 3; Wert: vier
Schlüssel: 4; Wert: und
Schlüssel: 5; Wert: so
Schlüssel: 6; Wert: weiter
                   



Dieses Konstrukt kann z.B. dann hilfreich sein, wenn man den Warenkorb eines Shops mit Arrays gestalten möchte. So kann man das Array beliebig erweitern und anschließend das kompl. array ausgeben, oder durchsuchen.



while


Die while-Schleifen sind die einfachste Form von Schleifen in PHP.

Die Grundform einer while-Anweisung lautet:
Code:
while (ausdruck) Anweisung
                   


Der Ablauf bei dieser Schleifenform ist dabei einfach. Bevor die Schleife ausgeführt wird, wird überprüft, ob der ausdruck richtig (TRUE) ist. Wenn ja, so wird die Schleife exakt einmal durchlaufen (Anweisung wird ausgeführt) und anschließend geht das Spiel von vorne los.
Die Schleife wird solange und so oft ausgeführt, wie der ausdruck TRUE ist.
Sollte der ausdruck innerhalb der Schleife geändert werden, so wird die Schleife dennoch bis zum Ende ausgeführt.
Da die while-Schleife stets vor dem Durchlaufen prüft, ob ausdruck TRUE ist, kann es also auch vorkommen, dass die Schleife gar nicht ausgeführt wird.

Nun aber mal ein Beispiel:
PHP-Code:
01
02
03
04
05
06
07
08
<?php
 $i 
1;
 while (
$i <= 10
 {
   echo 
$i.'<br />';
   
$i++;  // das gleiche wie $i=$i+1;
 
}
?>

Anmerkung:
in 2: wird die Variable $i definiert.
in 3: die Schleife wird gestartet, sofern $i kleiner oder gleich 10 ist
in 4: mit der Klammer startet die Schleife. Bei nur einer Anweisung in der Schleife können die beiden Klammern { und } wegfallen
in 5: Ausgabe von $i
in 6: die Variable $i wird um 1 erhöht (siehe hier)
in 7: Schleife wird beendet.


do .. while


die do...while - Schleife funktioniert ähnlich der while-Schleife mit dem wesentlichen Unterschied, dass diese Schleife mindestens einmal ausgeführt wird, da hier erst zum Ende des Durchlaufes überprüft wird, ob sie ein weiteres Mal durchlaufen soll.

Hier mal ein Beispiel:
PHP-Code:
01
02
03
04
05
06
07
08
09
<?php
  $i 
0;
  do
  {
    
$i++;
    echo 
$i.' Zeile<br />';
  }
  while (
$i<10);
?>

Anmerkung:
In diesem Beispiel wird lediglich von 1 bis 10 gezählt.