Dieses Programm verwendet für die Multiplikation der Zahlen zwei Schleifen. Demgemäß werden zwei Zählervariablen deklariert, die mit $ZaehlerAussen und $ZaehlerInnen bezeichnet sind. Die erste Schleife zählt von 1 bis 4, die zweite von 11 bis 13.
Während der Programmausführung liest der Interpreter die erste for-Anweisung und sieht daraufhin hinter der geöffneten Klammer nach, mit welchen Zahlen der Zählvorgang beginnen soll:
for ($ZaehlerAussen = 1;
Nachdem der Interpreter weiß, dass er ab dem Wert 1 zählen muss, trifft er auf die zweite for-Anweisung:
for ($ZaehlerInnen = 11;
Er weiß nun, dass ein zweiter Zählvorgang ausgeführt werden soll und merkt sich dessen Startwert (11). In $ZaehlerAussen befindet sich jetzt somit der Wert 1, während in $ZaehlerInnen der Wert 11 gespeichert ist.
Die folgenden beiden Anweisungen multiplizieren den Inhalt der Variablen $ZaehlerAussen mit dem Inhalt der Variablen $ZaehlerInnen und geben das Ergebnis auf dem Bildschirm aus. Im Anschluss daran liest der PHP-Interpreter die erste geschlossene geschweifte Klammer:
Er erhöht deshalb den Wert von $ZaehlerInnen und prüft, ob die Bedingung $ZaehlerInnen <= 13 bereits erfüllt ist. Da sich in der Variablen gegenwärtig der Wert 12 befindet, ist das Zählen noch nicht beendet. Der PHP-Interpreter springt somit im Programmcode zurück, um die Anweisungen auszuführen, die der Zeile
for ($ZaehlerInnen = 11 ;
folgen. Dies wiederholt sich, bis $ZaehlerInnen gleich 14 ist. Der Zählvorgang für die zweite Schleife ist somit beendet. Dann liest der Interpreter die zweite geschweifte geschlossene Klammer, der ersten Schleife.
Der Wert von $ZaehlerAussen wird daraufhin um 1 erhöht. Der Interpreter prüft anschließend, ob $ZaehlerAussen kleiner oder gleich 4 ist. Sie erinnern sich? Die erste Schleife zählt bis 4.
$ZaehlerAussen ist natürlich noch nicht 4. In der Variablen ist jetzt der Wert 2 gespeichert. Der Interpreter springt deshalb im Programmcode zurück in die Zeile, die der Anweisung
for ($ZaehlerAussen = 1;
folgt. Wenn Sie jetzt im Programm nachsehen, werden Sie feststellen, dass dies die Zeile
for ($ZaehlerInnen = 11;
ist. Die zweite Schleife wird also noch einmal ausgeführt. Diesmal ist in $ZaehlerAussen jedoch nicht der Wert 1, sondern der Wert 2 gespeichert. Die Zahlen von 11 bis 13 werden somit diesmal mit dem Wert 2 multipliziert. Das alles wiederholt sich, bis $ZaehlerAussen gleich 4 ist.
Die erste Schleife wird übrigens als äußere Schleife bezeichnet. Die zweite Schleife ist die innere Schleife, da sie sich innerhalb der äußeren Schleife befindet. Die innere Schleife wird wiederholt mit jedem Schleifendurchlauf der äußeren Schleife ausgeführt. Die äußere Schleife unseres Beispiels führt vier Durchläufe aus. Die innere Schleife wird somit viermal ausgeführt.
Die innere Schleife wiederum führt jedes Mal dann, wenn sie aufgerufen wird, drei Schleifendurchläufe aus. Da sie viermal aufgerufen wird, werden insgesamt zwölf Schleifendurchläufe ausgeführt. Schleifenkonstruktionen, wie die, die unser Skript verwendet, werden als verschachtelte Schleifen bezeichnet.
foreach-Schleifen
Eine weitere Schleifenart ist die foreach-Schleife, die benutzt wird, um alle in einem Objekt gespeicherten Elemente nacheinander zu bearbeiten. Ein solches Objekt kann beispielsweise ein Array sein. Die Syntax lautet wie folgt:
foreach (<$ArrayBezeichnung> as <$ArrayWert>)
Die Variable $ArrayWert nimmt den aktuellen Wert aus dem Array ($ArrayBezeichnung) auf. Wenn die Schleife beispielsweise zum dritten Mal durchlaufen wird, wird in $ArrayWert der Wert gespeichert, der in dem Array $ArrayBezeichnung die Ordnungszahl 2 (nicht 3, weil die Zählung mit 0 beginnt) besitzt. Dazu ein Beispiel:
liest, ermittelt er zunächst die Anzahl der in dem Array $Namen gespeicherten Werte. In unserem Fall befinden sich drei Namen in dem Array. Der Interpreter weiß somit, dass die Schleife drei Mal durchlaufen werden muss.
Vor dem ersten Schleifendurchlauf liest der Interpreter den ersten Wert aus dem Array aus und weist diesen der Variablen $AktuellerName zu. Die Anweisung innerhalb der Schleife gibt den Inhalt dieser Variablen, also den ersten Namen auf dem Bildschirm aus. Vor dem zweiten Schleifendurchlauf liest der Interpreter den zweiten Wert, also den zweiten Namen aus dem Array aus, und weist diesen der Variablen $AktuellerName zu. Dies wiederholt sich, bis alle Schleifendurchläufe beendet sind.