Egen funktion

I denna lektionen får du lära dig hur man gör egna funktioner i PHP.

Hur man bygger en egen funktion

Man kan skapa egna funktioner i PHP. I exemplet nedan kan det verka meningslöst att ha en egen funktion, och det är det även, men förhoppningsvis lär du dig i alla fall hur det fungerar.

Såhär ser syntaxen för en egendefinierad funktion ut:

PHP - PHP: Hypertext Preprocessor
<?php // Skapar funktionen "funktionensNamn" function funktionensNamn(){ // Här skriver vi vilken kod som ska köras då funktionen anropas } ?>

I koden ovan kallar vi funktionen "funktionensNamn". Den måste såklart inte heta detta, utan man kan döpa en funktion till vad som helst. Eller, inte riktigt vad som helst, men om du enbart använder dig av tecknen a-z och A-Z så kommer du inte få några problem.

Det är inte ofta man skapar en funktion som inte kräver något argument, och för att ange att funktionen ska anropas med ett argument skriver man in ett namn på en variabel i parenteserna efter funktionens namn (kallas parameter).

PHP - PHP: Hypertext Preprocessor
<?php // Första parametern kallar vi för $x function funktionensNamn($x){ // Här skriver vi vilken kod som ska köras då funktionen anropas } ?>

Antagligen vill vi även att funktionen ska skicka tillbaka något, och då kan vi använda oss av nyckelordet return på följande sätt:

PHP - PHP: Hypertext Preprocessor
<?php // Funktion som tar emot en parameter och skickar tillbaka den function minFunktion($x){ // Skicka tillbaka värdet i $x return $x; } // Exempel på användning echo "<p>Detta ".minFunktion("är")." lite text.</p>"; ?>
HTML - output
<p>Detta är lite text.</p>

Funktionen ovan är värdelös i och med att vi får tillbaka exakt det värde vi skickar in, men i funktionen kan vi använda värdet på x och skicka tillbaka ett nytt.

PHP - PHP: Hypertext Preprocessor
<?php function y($x){ $retur = $x*$x + 3*$x - 15; // Skicka tillbaka värdet i $retur return $retur; } // Exempel på användning for($i=1; $i<=5; $i++){ echo "<p>Vi skickar in ".$i." i funktionen och får tillbaka ".y($i).".</p>\n"; } ?>
HTML - output
<p>Vi skickar in 1 i funktionen och får tillbaka -11.</p> <p>Vi skickar in 2 i funktionen och får tillbaka -5.</p> <p>Vi skickar in 3 i funktionen och får tillbaka 3.</p> <p>Vi skickar in 4 i funktionen och får tillbaka 13.</p> <p>Vi skickar in 5 i funktionen och får tillbaka 25.</p>

Vi skickar in 1 i funktionen och får tillbaka -11.

Vi skickar in 2 i funktionen och får tillbaka -5.

Vi skickar in 3 i funktionen och får tillbaka 3.

Vi skickar in 4 i funktionen och får tillbaka 13.

Vi skickar in 5 i funktionen och får tillbaka 25.

Hoppas du har förstått grunderna för att skapa en egen funktion nu, för nedan kommer ett exempel på en funktion som summerar alla talen från 1 upp till och med det tal man anropar funktionen med. Anropar man funktionen med argumentet 4 returnerar funktionen alltså värdet 10 eftersom 1 + 2 + 3 + 4 = 10.

PHP - PHP: Hypertext Preprocessor
<?php function summa($n){ // Variabel som bygger upp returvärdet $summa = 0; // Addera på 1,2,3...,$n till $summa for($i=1; $i<=$n; $i++){ $summa += $i; } // Skicka tillbaka värdet i $summa return $summa; } // Exempel på användning echo '<p>Summan av alla heltal mellan 1 och 4 är '.summa(4).".</p>\n"; echo '<p>Summan av alla heltal mellan 1 och 6 är '.summa(6).".</p>\n"; echo '<p>Summan av alla heltal mellan 1 och 10 är '.summa(10).".</p>\n"; echo '<p>Summan av alla heltal mellan 1 och 25 är '.summa(25).'.</p>'; ?>
HTML - output
<p>Summan av alla heltal mellan 1 och 4 är 10.</p> <p>Summan av alla heltal mellan 1 och 6 är 21.</p> <p>Summan av alla heltal mellan 1 och 10 är 55.</p> <p>Summan av alla heltal mellan 1 och 25 är 325.</p>

Summan av alla heltal mellan 1 och 4 är 10.

Summan av alla heltal mellan 1 och 6 är 21.

Summan av alla heltal mellan 1 och 10 är 55.

Summan av alla heltal mellan 1 och 25 är 325.

Om man vill skapa en funktion med flera parametrar lägger man bara till fler namn på variabler inom parenteserna efter funktionens namn då man skapar den. Dessa separeras med kommatecknet.

PHP - PHP: Hypertext Preprocessor
<?php // Funktion som adderar 2 tal function addera($x, $y){ // Man kan skicka tillbaka värden på detta viset också return $x + $y; } // Exempel på användning echo '<p>Summan av 24 och 45 är '.addera(24, 45).'.</p>'; ?>
HTML - output
<p>Summan av 24 och 45 är 69.</p>

Summan av 24 och 45 är 69.

Funktionen summera ovan är såklart helt meningslös, men den är ett exempel på en funktion som anropas med 2 argument.

Nedan följer ett exempel på en funktion man faktiskt kan ha nytta av. Innan skapade vi funktionen summera, som summerade alla tal från 1 upp till och med angivet heltal. Nu ska vi göra en liknande funktion, men istället för att börja från 1 får man själv ange startvärde när man anropar funktionen, så den kräver 2 argument. Anropar vi den med argumenten 2 och 5 ska den alltså returnera värdet 14, eftersom 2 + 3 + 4 + 5 = 14.

PHP - PHP: Hypertext Preprocessor
<?php function summa($start, $slut){ // Variabel som bygger upp returvärdet $summa = 0; // Addera på $start...$slut till $summa for($i=$start; $i<=$slut; $i++){ $summa += $i; } // Skicka tillbaka värdet i $summa return $summa; } // Exempel på användning echo '<p>Summan av alla heltal mellan 2 och 5 är '.summa(2, 5).'.</p>'; ?>
HTML - output
<p>Summan av alla heltal mellan 2 och 5 är 14.</p>

Summan av alla heltal mellan 2 och 5 är 14.

Gå till nästa lektion, Formulär.