Rückgabewert mit return
Beim Aufruf einer PHP-Funktion wird der Code der Funktion mit den evtl. übergebenen Parametern ausgeführt. Enthält z.B. die Funktion einen echo-Befehl, dann erfolgt auch eine entsprechende Ausgabe. Nicht immer ist es erwünscht, dass das bereits in der Funktion festgelegt wird. Es ist auch möglich, erst beim Aufruf festzulegen, ob eine Ausgabe erfolgen soll oder nicht. Hierbei muss man die Funktion mit der Anweisung return einen Rückgabewert übergeben lassen. Das ist ein Wert, der beim Aufruf der Funktion an das aufrufende Modul übergeben wird und beispielsweise ausgegeben werden kann.
Beim folgenden Beispiel enthält die Funktion eine Additionsrechnung und das Ergebnis wird in der Variable $ergebnis gespeichert. Diese Variable wurde als Rückgabewert festgelegt, sodass man beim Aufruf der Funktion immer den Wert der Variable $ergebnis erhalten würde. Möchte man den Rückgabewert direkt ausgeben, kann man die Funktion mit dem echo-Befehl aufrufen.
<?php
// Funktion deklarieren
function addieren ($wert1, $wert2)
{
$ergebnis = $wert1 + $wert2;
return $ergebnis;
}
// Aufruf der Funktion, Ausgabe des Rückgabewerts
echo addieren (3, 2);
?>
Der Umweg über den Rückgabewert ist deshalb notwendig, weil Variablen in Funktionen nicht außerhalb zur Verfügung stehen und umgekehrt. Ausnahmen bilden hier lediglich die globalen Variablen. Beim folgenden Beispiel würde nichts ausgegeben werden, da die in der Funktion enthaltene Variable $ergebnis außerhalb der Funktion nicht zur Verfügung steht.
<?php
// Funktion deklarieren
function addieren ($wert1, $wert2)
{
$ergebnis = $wert1 + $wert2;
}
// Funktioniert nicht
echo addieren (3, 2);
// Funktioniert auch nicht
addieren (3, 2);
echo $ergebnis;
?>
Nicht immer möchte man, dass der Rückgabewert der Funktion am Bildschirm ausgegeben wird. Es passiert auch häufig, dass man ihn einer Variable zuweisen möchte, damit man ihn weiter verarbeiten kann. Beim folgenden Beispiel wird der Rückgabewert beim Aufruf der Funktion der Variable $rueckgabe zugewiesen.
<?php
// Funktion deklarieren
function addieren ($wert1, $wert2)
{
$ergebnis = $wert1 + $wert2;
return $ergebnis;
}
// Rückgabewert einer Variable zuweisen
$rueckgabe = addieren (3, 2);
// Weiterverarbeiten des Variable
$neuesergebnis = $rueckgabe + 5;
echo $neuesergebnis;
?>
Datentyp des Rückgabewerts
Man kann mit return nur einen Rückgabewert übergeben. Dieser kann jedoch beliebigen Datentyps sein, also Zeichenketten, Wahrheitswert (bool), Ganzzahlen, Fließkommazahlen, Arrays oder auch Objekte. Wenn man mehrere Werte übergeben möchte, könnte man diese in einem Array speichern, da diese mehrere Werte enthalten können und als Rückgabewert das Array angeben. Nachfolgend sind einige Beispielcodes, bei denen die Rückgabewerte der Funktionen unterschiedlichen Datentyps sind und zur Überprüfung untereinander ausgegeben werden. Für die Ermittlung des Datentyps wird die Funktion gettype() verwendet.
<?php
// Typ string
function typstring()
{
return 'Zeichenkette';
}
// Typ und Wert ausgeben
echo gettype (typstring()) . '<br>';
echo typstring() . '<br>';
?>
<?php
// Typ bool
function typbool()
{
return TRUE;
}
// Typ und Wert ausgeben
echo gettype (typbool()) . '<br>';
echo typbool() . '<br>';
?>
<?php
// Typ int
function typint()
{
return 10;
}
// Typ und Wert ausgeben
echo gettype (typint()) . '<br>';
echo typint() . '<br>';
?>
<?php
// Typ double
function typdouble()
{
return 10.563;
}
// Typ und Wert ausgeben
echo gettype (typdouble()) . '<br>';
echo typdouble() . '<br>';
?>
<?php
// Typ array
function typarray()
{
$wochentage = array ('Mo', 'Di', 'Mi', 'Do', 'Fr');
return $wochentage;
}
// Typ und Wert ausgeben
echo gettype (typarray()) . '<br>';
$wochentage = typarray();
foreach ($wochentage as $wert)
{
echo $wert . '<br>';
}
?>
Da an dieser Stelle Objekte noch nicht behandelt wurden, wird auf ein Beispiel damit verzichtet. An den Beispielen ist zu erkennen, dass bei der Deklaration der Funktionen die runden Klammern immer angegeben werden müssen, auch wenn keine Parameter darin festgelegt werden. Das Leerzeichen zwischen Funktionsname und der öffnenden runden Klammer ist außerdem optional.