5.2 PHP-Grundlagen - Schleifen, Funktionen
Nachdem Sie im vorherigen Unterkapitel gelernt haben mit Variablen und Bedingungen umzugehen, zeige ich Ihnen nun weitere wichtige Grundlagen von PHP. Dabei geht es in den folgenden Abschnitten darum, wie Sie sich stets wiederholende Abläufe möglichst einfach umsetzen können.
Schleifen
Neben den Bedingungen sind Schleifen eins der wichtigsten Standard-Werkzeuge in jeder Programmiersprache. Sie wollen etwa alle Namen, die Sie zuvor gespeichert haben, in einer Liste ausgeben. Dann tun Sie dies solange, bis Sie alle Namen ausgegeben haben. Dafür gibt es die verschiedensten Schleifen-Typen, wobei ich Ihnen zunächst lediglich die zwei meiner Meinung nach wichtigsten vorstellen möchte.while-Schleife
In einer while-Schleife machen Sie solange etwas, bis ein bestimmter Fall eingetreten ist. Wichtig dabei ist, dass dieser Fall irgendwann eintritt. Kann dies nicht passieren, so arbeitet das Programm endlos, was in der Regel zum Absturz der Anwendung führt. Quellcode 1 zeigt ein Beispiel für eine korrekte Schleife.- <?php
- $i = 0;
- while($i < 100)
- {
- echo $i.'<br />';
- $i++;
- }
- ?>
Die Befehle innerhalb der while-Schleife werden solange ausgeführt, bis der Wert in $i gleich oder größer als 100 ist. Zeile 5 gibt den Wert mit einem anschließenden Zeilenumbruch in HTML aus. Anschließend wird der Wert durch $i++, was die Kurzschreibweise für $i = $i + 1 ist, erhöht. Wird der Wert nicht erhöht, so erhalten Sie eine Endlosschleife, da die 100 niemals erreicht werden kann.
for-Schleife
Eine andere Schleifen-Art ist die for-Schleife, in der etwas für eine bestimmte Anzahl ausgeführt wird. Diese wäre für das zuvor gezeigte Beispiel in Quellcode 1 wesentlich besser geeignet gewesen, wie Quellcode 2 zeigt.- <?php
- for($i = 0; $i < 100; $i++)
- {
- echo $i.'<br />';
- }
- ?>
Die for-Schleife benötigt 3 Angaben von Ihnen. Zunächst einen Initialwert, mit dem die Schleife durchlaufen werden soll. Anschließend eine Bedingung, die eintreten soll und abschließend was nach jedem Schleifendurchlauf geschehen soll. Die Ausgabe gleicht der aus dem zuvor gezeigten Beispiel, wobei der Quellcode wesentlich kürzer ist. for-Schleifen sind daher optimal für eine bestimmte Anzahl an Durchläufen geeignet, wobei der Wert 100 natürlich auch durch eine Variable ersetzt werden kann, in der jeder beliebige Wert stehen könnte.
Welche Schleife verwenden Sie wann
Generell ist es egal, welche Schleifen-Art Sie bevorzugen, aber in der Regel ergibt sich dies durch den Kontext. Gesetzt dem Fall, dass Sie beispielsweise sehr viele Namen aus einer Datenbank auslesen, möchten Sie normalerweise im Quellcode lediglich schreiben, dass diese Namen solange ausgegeben werden sollen bis kein weiterer mehr folgt. Daher sollten Sie eine while-Schleife verwenden. Alternativ dazu können Sie selbstverständlich auch zunächst die Datenbank fragen, wie viele Namen denn überhaupt vorhanden sind und dann eine for-Schleife verwenden, was aber mehr und vor allem unnötiger Aufwand ist.Funktionen
PHP stellt Ihnen bereits viele vordefinierte Funktionen zur Verfügung. Dabei handelt es sich quasi um Unterprogramme, die Sie aufrufen können um etwa die Länge eines Strings zu berechnen. Für dieses konkrete Beispiel würde das bedeuten, dass Sie den String Buchstabe für Buchstabe durchlaufen müssten, um dabei jeweils eine Zahl hochzuzählen. Damit Sie dies nicht stetig neu programmieren müssen gibt es Funktionen, in denen solche Programmteile ausgelagert werden.Die Handhabung einer Funktion ist denkbar einfach. Sie hat einen optionalen Rückgabewert und einen oder mehrere ebenfalls optionale Übergabeparameter. Quellcode 3 zeigt ein einfaches Beispiel.
- <?php
- $var = 'Webdesign Tutorial';
- $var2 = strlen($var);
- echo $var2;
- ?>
Zeile 3 zeigt den Aufruf der Funktion. Diesem übergebe ich den String (Übergabewert), dessen Länge ich berechnen möchte. Ob Sie den String direkt übergeben oder wie in meinem Beispiel zunächst in eine Variable schreiben spielt dabei keine Rolle. Da diese Funktion einen Rückgabewert enthält, weise ich diesen $var2 zu. Würde ich dies nicht tun, so würde ich zwar die Länge des Strings berechnen, das Ergebnis dazu würde ich mir aber nirgends merken bzw. ausgeben, so dass die Funktion nutzlos wäre. Quellcode 4 zeigt die Kurzschreibweise für das zuvor gezeigte Beispiel ohne die Speicherung der Zwischenwerte in Variablen.
- <?php
- echo strlen('Webdesign Tutorial');
- ?>
Spezielle Funktionen können Sie auf php.net nachschlagen. Am Beispiel der strlen()-Dokumentation sehen Sie, was die Funktion macht und welche Parameter erwartet werden. Die Funktion erwartet als einzigen Übergabeparameter einen String und gibt einen Integer (also eine Zahl) zurück. Besonders hilfreich sind dabei die Beispiele, die bei nahezu jeder Funktion vorhanden sind.
Um sich einen kompletten Überblick über die bereits vorhandenen Funktionen in PHP machen zu können, empfehle ich Ihnen den Download der PHP-Dokumentation. Ich persönlich finde dabei das chm-Format am praktischsten, da Ihnen dieses eine sehr gute Suchfunktion zur Verfügung stellt.
Eigene Funktionen
Selbstverständlich können Sie sich auch eigene Funktionen schreiben, die Sie stets wiederverwenden können. Eine der Grundregeln der Programmierung ist es, Quellcode nach Möglichkeit niemals doppelt zu schreiben. Führen Sie also stehts die gleichen Berechnungen aus, so lohnt es sich in der Regel, diese in eine Funktion auszulagern. Als Beispiel zeige ich Ihnen in Quellcode 5, wie Sie die Fläche eines Rechtecks berechnen und ausgeben können.- <?php
- function rectangleArea($x, $y)
- {
- $area = $x * $y;
- echo 'Die Fläche des Rechtecks mit den Maßen '.$x.'m mal '.$y.'m beträgt '.$area.'m².';
- }
- rectangleArea(4, 5);
- ?>
Eine Funktion beginnt mit dem Schlüsselwort function, gefolgt von einem frei wählbarem Funktionsnamen (mit Ausnahme der Einschränkungen, die auch für Variablennamen gelten) und den Übergabeparametern, deren Anzahl und Namen ebenfalls frei definierbar sind. Innerhalb der geschweiften Klammern bzw. der Funktion können Sie die übergebenen Variablen verwenden. Außerhalb sind diese nicht verfügbar. In diesem Beispiel berechne ich in Zeile 4 die Fläche des Rechtecks, indem ich die beiden übergebenen Variablen miteinander multipliziere. Anschließend gebe ich das Ergebnis in Zeile 5 aus. Die Funktion wird erst dann ausgeführt, wenn Sie diese, wie in Zeile 8 gezeigt, aufrufen.
Da Sie oftmals mit dem Wert einer Funktion weiter rechnen möchten gibt es die Möglichkeit, einen Rückgabewert zu definieren. Quellcode 6 zeigt ein angepasstes Beispiel.
- <?php
- function rectangleArea($x, $y)
- {
- $area = $x * $y;
- return $area;
- echo 'Die Fläche des Rechtecks mit den Maßen '.$x.'m mal '.$y.'m beträgt '.$area.'m².';
- }
- $area = rectangleArea(4, 5);
- ?>
Durch das Schlüsselwort return in Zeile 5 wird der berechnete Wert zurückgegeben. Alle darauf folgenden Befehle, wie der in Zeile 6, werden nicht mehr ausgeführt, da die Funktion durch den return-Aufruf verlassen wird.
In Zeile 9 wird das Ergebnis der Funktion in der Variablen $area gespeichert. Normalerweise sollten Sie darauf achten, dass Sie den gleichen Variablennamen nicht mehrfach verwenden, da Sie sich diese ansonsten womöglich unbewusst überschreiben. Mit diesem Beispiel möchte ich Ihnen jedoch zeigen, dass es für den Fall funktioniert, da die Variable $area in Zeile 4 nur innerhalb der Funktion definiert wurde und somit auch nur dort verfügbar ist. Ebenso kann die Funktion nicht auf Variablen zugreifen (mit Ausnahme von globalen Variablen), die außerhalb dieser definiert wurden.