PHP Tutorial - Eigene Funktionen
Veröffentlich von Phil am 30. Juli 2010 - 17:58:58 Uhr | Veröffentlicht in Tutorials Um direkt ein Tutorial für euch parat zu haben beginnen wir mit einem einfachen Einsteigertutorial im Bereich PHP.
Wir wollen lernen mit einer selbst geschriebenen Funktion zwischen Einzahl und Mehrzahl von Worten dynamisch unterscheiden zu können.
Unsere Problemstellung:
<?
$banane =1;
$apfel = 3;
$birne = 1;
$inhalt = "Wir haben $banane Bananen, $apfel Äpfel und $birne Birnen";
echo $inhalt;
// Ausgabe: Wir haben 1 Bananen, 3 Äpfel und 1 Birnen
?>
Wie man sieht gibt es offensichtlich Probleme mit dem Numerus, also mit Einzahl- & Mehrzahl der Früchte.
Wie umgehen wir dieses Problem? Wir möchten die Zahlen ohne Probleme ändern können, aber dafür nicht extra jede Endung im Text verändern.
Die Lösung: Unsere eigene Funktion numerus()
Um unsere eigene Funktion zu definieren, gehen wir folgendermaßen vor:
<?
function numerus($wort, $endung, $zahl)
{
}
?>
Somit haben wir die Funktion numerus() mit den Parametern
Wort,
Endung und
Anzahl definiert.
Die Übergabe der Werte würde also folgendermaßen Aussehen:
<?
numerus("Birne","n",$birne)
?>
Wir übergeben also das Wort, die Mehrzahlendung sowie die Anzahl.
Leider passiert jetzt noch nicht viel, da wir unsere Funktion noch nicht weiter ausgebaut haben.
Demzufolge:
<?
function numerus($wort, $endung, $zahl)
{
if($zahl ==
1)
{
return $wort;
}
}
?>
Wenn als Anzahl also 1 gemeldet wird, wird das normale Wort per
return zurückgegeben.
Wenn nun die Anzahl aber ungleich 1 ist, müssen wir die Mehrzahlendung hinzufügen:
<?
function numerus($wort, $endung, $anzahl)
{
if($zahl ==
1)
{
return $wort;
}
else
{
if(
strlen($endung) >=
4)
{
return $endung;
}
else
{
return $wort.$endung;
}
}
}
?>
In unserem
else Teil wird überprüft, ob die angegebene Endung länger oder gleich 4 Buchstaben ist, der Grund dafür, folgt gleich.
Sollte die Endung kürzer sein, wird das Wort und die angefügte Endung ausgegeben.
Wenn die angegebene Endung mindestens 4 Buchstaben hat, gehen wir von einem Sonderfall aus, denn bei einigen Worten kann nicht ohne weiteres eine Endung angegeben werden. Sehen wir nochmal in unser Beispiel:
Angenommen wir wenden unsere Funktion auf das Wort
"Apfel" an. Wir können nicht einfach nur eine Endung angeben, die hinten an gehangen wird, da das gesamte Wort geändert werden soll.
Daher geben wir als Endung einfach
"Äpfel" an, und unsere Funktion wird erkennen, dass diese Endung aufgrund der Länge keine Endung ist, sondern das neue Wort. So werden alle Fälle von uns abgedeckt.
<?
function numerus($wort, $endung, $zahl)
{
if($zahl ==
1)
{
return $wort;
}
else
{
if(
strlen($endung) >=
4)
{
return $endung;
}
else
{
return $wort.$endung;
}
}
}
$banane =
1;
$apfel =
3;
$birne =
1;
$inhalt =
"Wir haben $banane ".numerus(
"Banane",
"n",$banane).
", $apfel ".numerus(
"Apfel",
"Äpfel",$apfel).
" und $birne ".numerus(
"Birne",
"n",$birne);
echo $inhalt;
/// Ausgabe: Wir haben 1 Banane, 3 Äpfel und 1 Birne
?>
In diesem Beispiel hätten wir zwar sicher auch per Hand die Endungen verändern können, aber angenommen wir haben unzählige Endungen, kann eine solche Funktion unsere Arbeit deutlich vereinfachen.
Generell können eigene Funktion immer wiederkehrende Arbeitsabläufe stark vereinfachen und somit wertvolle Ressourcen sparen.