|
Funktionen in PHP - ein mächtiges Werkzeug
Stellt euch vor, Ihr habt ein Programm was sehr oft immer wieder das
selbe tut - zum Beispiel eine bestimmte Rechenaufgabe ausführen.
Jetzt benötigt man diese Rechnung in einem Programm ca 50 mal, aber
nicht hintereinander - also scheiden Schleifen aus. Ich könnte die
Zeilen für die Berechnung der Formel 50x im Programmcode auftauchen
lassen. Ändert sich allerdings was an der Formel, dann muss ich
50x die Formel korrigieren ! Hierfür kann man Funktionen deklarieren !
Eine Funktion ist praktisch wie ein neuer PHP Befehl den ich selbst erstelle !
Beispiel: function meineformel($zahl, $prozent)
<?php
# Diese Funktion rechnet den Prozentwert von der # angegebenen Zahl aus function meineformel($zahl, $prozent) { $ergebnis = ($zahl / 100) * $prozent; return $ergebnis; }
echo "45 % von 100 sind = " . meineformel(100,45) . "<br>"; echo "60 % von 100 sind = " . meineformel(100,60) . "<br>"; ?>
|
Ausgabe: | 45 % von 100 sind = 45 60 % von 100 sind = 60 |
Erklärung:
Mit function definiere ich die neue Funktion, den neuen
Befehl. Dahinter nenne ich meine neue Funktion meineformel. In klammern
gebe ich an, welche Parameter meine Funktion beim Aufruf erwartet. In diesem
Fall erwarten wir zuerst irgendeine Zahl und dann den Prozentwert den wir
ausrechnen wollen.
Jetzt kann ich meineformel() so oft benutzen wie ich möchte. Muss ich etwas
ändern muss ich nur diese eine Funktion ändern und nicht 50 Aufrufe im
Programmtext.
Danach kommt meine Prozentformel die das
Ergebnis in $ergebnis speichert. Ich könnte das Ergebnis jetzt
mit echo ausgeben, aber ich weiss im Zweifel ja gar nicht
ob der Teil des Programms der gerade diese Funktion benutzt auch wirklich eine
Bildschirmausgabe haben möchte. Vielleicht wird diese Zahl auch nur für
weitere interne Berechnungen benötigt, daher gebe ich die Zahl mit
return zurück. Mit return $ergebnis; springt
das Programm von der Schleife wieder zu dem Punkt wo die Funktion aufgerufen
wurde und übergibt den ausgerechneten Wert. Benutze ich nicht den
Befehl return, dann durchläuft PHP die Funktion bis
zur letzten geschweiften Klammer.
Achtung - merke:
· die Funktion wird nicht ausgeführt, solange ich Sie nicht aufrufe
· Variablen ausserhalb der Funktion, existieren nicht innerhalb der Funktion
· Variablen innerhalb der Funktion, existieren nicht ausserhalb der Funktion
Füge ich am Ende des Skriptes noch ein echo $ergebnis hinzu, dann
kriege ich auf dem Bildschirm nichts angezeigt. Innerhalb der Funktion
meineformel wurde die Variable gesetzt , ausserhalb allerdings nicht
daher ist sie ausserhalb nicht existent. Ich kann innerhalb und ausserhalb den selben
Namen für eine Variable verwenden, ohne dass die beiden sich stören.
Sie sind beide völlig unabhängig voneinander !
Beispiel:
<?php $a = 5; $b = 10;
function schrank() { $a = 1; $b = 9; echo "A im Schrank ist = $a <br>"; }
function tisch() { $b = 2; echo "B auf dem Tisch ist = $b <br>"; echo "A auf dem Tisch ist = $a <br>"; }
schrank(); # starte Funktion schrank tisch(); # starte Funktion tisch
echo "A ist $a <br>"; echo "B ist $b <br>"; ?>
|
Ausgabe: | A im Schrank ist = 1 B auf dem Tisch ist = 2 A auf dem Tisch ist = A ist 5 B ist 10 |
Schaut euch das genau an und verdeutlicht es euch !!!
Funktionen mit Startwerten füttern
Wenn man eine Funktion erstellt kann man selbst bestimmen, welche Werte man
mit übergeben haben möchte. Man kann die Funktion allerdings auch
so gestalten, dass wenn aus dem Programm kein Wert übergeben wird dass
automatisch ein "anderer Wert" genommen wird.
Beispiel:
<?php # Diese Funktion rechnet den Prozentwert von der # angegebenen Zahl aus function meineformel($zahl=100, $prozent=50) { if ($zahl != 0) # Wenn $zahl nicht 0 ist, dann ... { $ergebnis = ($zahl / 100) * $prozent; return $ergebnis; } }
echo meineformel(); ?>
|
In diesem Beispiel haben wir unsere Prozentrechnungsfunktion genommen. Wir haben
bei dem Aufruf aber in den runden Klammern keine Werte mit übergeben. Wenn
Ihr oben bei der Definition mal in den runden Klammern guckt, dort steht
$zahl=100 und $prozent=50 - das bedeutet wenn kein Wert übergeben
wird, werden einfach diese beiden Werte genommen anstatt gar nichts. Dies geht
auch mit Zeichenketten. Wenn eure Funktion zum Beispiel ein Wort erwartet, könnt
Ihr auch ein "Standardwort" zuweisen, falls gar keins mit übergeben wird.
|