Je nach Verwendungszweck einer Funktion kann eine Funktion mit oder ohne Parameter bzw. mit oder ohne Rückgabewert erforderlich sein.
Bei einer Funktion ohne Parameter werden bei jedem Aufruf dieselben Anweisungen ausgeführt.
Beispiel: funktionen1.php
<?php function Text() { echo "<p>Hallo Welt!</p>"; } function Linie() { echo "<p><hr></p>"; } Text(); Linie(); Text(); Linie(); ?>
Bei einer Funktion mit einem oder mehreren Parametern werden bei jedem Aufruf der Funktion in Abhängigkeit von den Parametern ähnliche Aufgaben ausgeführt. Hierbei kann ein Parameter eine Konstante oder eine Variable sein.
Wenn Sie eine Funktion mit mehreren Parametern aufrufen, müssen die Anzahl und die Reihenfolge der Parameter übereinstimmen.
Beispiel: funktionen2.php
Im folgenden Skript werden die Preise pro kg mithilfe einer Funktion mit einem Parameter berechnet.
<?php function Preis($menge) { $betrag = 1.2*$menge; echo "Der Preis von $menge kg ist: $betrag<br>"; } Preis(2); Preis(5); Preis(10); $einkaufsmenge=20; Preis($einkaufsmenge); ?>
Die Funktion Preis() wird dreimal aufgerufen. Der übergebene Parameter (der Wert in der Klammer) ist bei jedem Aufruf ein anderer. Der Wert in der Klammer wird der Variablen $menge übergeben. Mithilfe der Variablen $menge wird beim Aufruf der Funktion die Variable $betrag berechnet und am Bildschirm ausgegeben.
Beispiel: funktionen3.php
Wird eine Funktion mit mehreren Parametern aufgerufen, wird der erste Wert an den ersten Parameter, der zweite Wert an den zweiten Parameter usw. übergeben.
<?php function Preis($sorte,$preis,$menge) { $betrag = $preis * $menge; echo "Der Preis von $menge kg $sorte ist: $betrag<br>"; } Preis("Jonagold",1.5,5); Preis("Gala",1.65,10); Preis("Elstar",2.00,4); ?>
Die Funktion Preis() wurde mit 3 Parametern versehen: $sorte, $preis, $menge.
Beim Aufruf der Funktion werden durch Kommata getrennt drei Parameter übergeben.
Veränderung von Parametern innerhalb einer Funktion
Wenn Sie eine Variable als Parameter an eine Funktion übergeben, dann erhält die Funktion eine Kopie der übergebenen Variablen. Die Übergabe der Parameter als Kopie wird auch als call-by-value bezeichnet. Um den Wert einer übergebenen Variablen zu ändern, verändern Sie nur ihre lokale Kopie. Eine Veränderung der Kopie hat keinerlei Rückwirkung auf das Original.
Manchmal ist aber eine Veränderung der übergebenen Variablen erwünscht, beispielsweise um den Preis einer Bestellung abhängig zu machen von der vorgegebenen Menge. Um dies zu erreichen, übergeben Sie den Parameter als Referenz auf das Original. Sie übergeben also nicht, wie bei dem call-by-value-Verfahren, den Inhalt bzw. den Wert einer Variablen, sondern einen Verweis auf die Variable. Diese Vorgehensweise wird call-by-reference genannt. Eine Veränderung hat, anders als bei der Übergabe als Kopie, Rückwirkung auf das Original. Eine Referenz auf das Original erhalten Sie, indem Sie vor den Variablennamen ein & setzen, z. B. &$preis.
Beispiel: byreference.php
<?php function Preis($sorte, &$preis, $menge) {if ($menge > 10) {$preis = 1; } $betrag = $preis * $menge; echo "Der Preis von $menge kg $sorte ist: $betrag EUR <br>"; } $sorte = "Elstar"; $preis = 2; $menge = 8; Preis($sorte, $preis, $menge); $sorte = "Elstar"; $preis = 2; $menge = 15; Preis($sorte, $preis, $menge); ?>
$sorte,&$preis,$menge. Die Variable $preis wird mithilfe des vorangestellten & als Referenz gekennzeichnet.if-Schleife wird festgelegt, dass der Wert der Variablen $preis = 1, wenn $menge > 10 ist. Beim Aufruf der Funktion werden drei Parameter durch Kommata getrennt übergeben. Da der Wert der Variablen $menge < = 10 ist, wird zur Preisberechnung der ursprüngliche Wert der Variablen $preis = 2 verwendet. Wenn aber der Wert der Variablen $menge > 10 ist, wird der Wert der Variablen $preis aufgrund der Bedingung in der if-Schleife auf 1 verändert.
Wenn Sie innerhalb einer Funktion ein Ergebnis ermitteln und dies an den Aufrufer zurückliefern möchten, verwenden Sie die return-Anweisung.
Allerdings ist hier zu beachten, dass eine return-Anweisung nicht nur den Rückgabewert festlegt, sondern auch die Ausführung der Funktion sofort beendet. Alle Anweisungen nach einer return-Anweisung werden nicht mehr ausgeführt, und der vorhandene Rückgabewert wird an das Programm ausgegeben.
Beispiel: funktionen4.php
<?php function Summe ($zahll, $zahl2) { $ergebnis = $zahll + $zahl2; return $ergebnis; } $summel = Summe(10,20); echo "Summe1: $summel<br>"; $zahl3 = 0.11; $summe2 = Summe (19,$zahl3); echo "Summe2: $summe2<br>"; ?>
Summe() hat die beiden Parameter $zahl1 und $zahl2.$ergebnis gespeichert.$ergebnis wird mithilfe der Anweisung return an die aufrufende Stelle zurückgeliefert.Summe(l0,20) liefert in $ergebnis den Rückgabewert zurück. Dieser Wert wird der Variablen $summe zugewiesen.
PHP kann nur einen Wert mit return() zurückgeben. Wenn Sie mehrer Werte aus einer Funktion zurückgeben möchten, können Sie diese Werte in einem Array zusammenfassen.
Um Variablen die Elemente des zurückgelieferten Arrays zuzuweisen, verwenden Sie die list()-Anweisung.
<?php function zahlen() { $ret = array(2,4,6); return $ret; } list($var1,$var2,$var3) = zahlen(); echo "Die zurückgelieferten Variablen sind: $var1, $var2, $var3"; ?>