Inhaltsverzeichnis

Funktionen

Syntax

function <NAME-DER-FUNKTION> ( <ÜBERGABEWERTE> ) {
   <AUSZUFÜHRENDER CODE>;
   return ( <ZURÜCKGEBENER WERT> );
}

Eine Funktion muss keine Übergabewerte haben, sie muss auch nicht zwingend einen Wert zurückgeben.

Beispiel

Funktion ohne Übergabe- und Rückgabewert

<?php
function sagHallo() {
    echo "Hallo Welt"<br />;
}
 
sagHallo(); 
echo "Huhu <br />";
sagHallo();
?> 

Aufgabe:

Probiere das Beispiel in deinem Webspace aus.

Funktionen mit Übergabewert

Beim Funktions-Aufruf können Inhalte übergeben werden, im Beispiel teilen(18,2). 18 und 2 heißen dabei Argumente oder Übergabwerte. Die Funktion nimmt die Argumente dabei in der angebenen Reihenfolge entgegen und weist diese den Variablen $zaehler und $nenner zu.

<?php
function teilen( $zaehler, $nenner )
{
    $bruch=$zaehler/$nenner;
    echo $bruch;
}
 
echo "<p>Berechnung von 18 / 2 = ";
teilen(18,2);
?>

Alle Variablen, die innerhalb der Funktion deklariert oder initialisiert werden, gelten nur lokal innerhalb des Funktionsblocks. Probiere den folgenden Code aus:

<?php
function teilen( $zaehler, $nenner )
{
    $bruch=$zaehler/$nenner;
 
}
 
echo "<p>Berechnung von 18 / 2 = ";
teilen(18,2);
echo $bruch;
?>

Da $bruch außerhalb der Funktion nicht existiert, erfolgt hier eine Fehlermeldung.

Um dieses Problem zu lösen, kann man Rückgabewerte übergeben. Dabei kehrt der Programmablauf an die Stelle zurück, an der die Funktion aufgerufen wurde und übergibt den mit return angegebenen Wert. Um diesen Rückgabewert weiterzuverarbeiten, muss man ihn im Hauptprogramm in einer Variablen ablegen.

<?php
function teilen( $zaehler, $nenner )
{
    $bruch=$zaehler/$nenner;
    return $bruch;
 
}
 
echo "<p>Berechnung von 18 / 2 = ";
$ergebnis=teilen(18,2); // speichert den Rückgabewert der Funktion in der Variablen $ergebnis
echo $ergebnis;
?>

Aufpassen muss man, wenn man im globalen Programmbereich und innerhalb von Funktionen Variablen mit dem selben Namen verwendet:

<?php
function teilen( $zaehler, $nenner )
{
    $bruch=$zaehler/$nenner;
    echo "Lokal in der Funktion: $bruch<br />";
    return $bruch;
 
}
 
$bruch=500;
echo "Global vorher: $bruch <br /> ";
echo "<p>Berechnung von 18 / 2 = ";
$ergebnis=teilen(18,2);
echo $ergebnis;
echo "<br />Global nachher: $bruch <br />";
$bruch=teilen(20,2); // hier wird die globale $bruch Variable mit 
//dem Rückgabewert überschrieben.
echo "<br />Global am Ende: $bruch <br />";
?>

Aufgabe: