Differences
This shows you the differences between two versions of the page.
dvprog_11 [2020-02-10 11:19] Daniel Viström |
dvprog_11 [2022-07-18 13:20] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Genomgång - Funktioner ====== | ||
- | |||
- | En funktion är en del av ett program som anropas av den övriga koden för att utföra en viss uppgift. Funktionen kan anropas flera gånger från olika delar av programmet. När en funktion anropas körs koden i funktionen. Därefter " | ||
- | \\ | ||
- | Funktionerna skriver vi längst upp i php-filen eller i en annan fil som inkluderas. | ||
- | |||
- | ==== Exempel 1 ==== | ||
- | |||
- | <code php> | ||
- | <?php | ||
- | |||
- | /* | ||
- | * En funktion kan vara utan parametrar och | ||
- | * behöver inte returnera något. Denna funktion | ||
- | * skriver bara ut en rad med stjärnor. | ||
- | */ | ||
- | function stars(){ | ||
- | echo ' | ||
- | } | ||
- | |||
- | /* | ||
- | * Denna funktion skriver ut lika många stjärnor | ||
- | * som värdet på parametern $n. | ||
- | */ | ||
- | function stars2($n){ | ||
- | $i = 0; | ||
- | while($i < $n){ | ||
- | echo ' | ||
- | $i++; | ||
- | } | ||
- | // Ny rad skrivs ut när alla stjärnor är utskrivna. | ||
- | echo '< | ||
- | } | ||
- | |||
- | // Här nedanför startar | ||
- | include ' | ||
- | |||
- | // php har en massa färdiga funktioner, bl.a. för strängar. | ||
- | // Värdet som returneras kan skrivas ut eller sparas i en variabel. | ||
- | echo strrev(' | ||
- | $text = ' | ||
- | $text2 = strrev($text); | ||
- | echo $text2 . '< | ||
- | |||
- | stars(); | ||
- | stars(); | ||
- | // Funktioner är bra om man vill göra samma sak | ||
- | // på flera ställen i koden. | ||
- | stars2(5); | ||
- | stars2(10); | ||
- | stars2(20); | ||
- | |||
- | include ' | ||
- | </ | ||
- | |||
- | ==== Exempel 2 ==== | ||
- | |||
- | <code php> | ||
- | <?php | ||
- | /* | ||
- | * En funktion kan ha flera parametrar och kan | ||
- | * returnera ett värde. | ||
- | * | ||
- | * OBS! $tal1 och $tal2 är inte samma variabler som | ||
- | * i huvudprogrammet fast de heter likadant. | ||
- | * De blir en kopior av variablerna i huvudprogrammet. | ||
- | */ | ||
- | function summa($tal1, | ||
- | $summa = $tal1 + $tal2; | ||
- | $tal1 = 1000; // $tal1 ändras bara i kopian som finns i funktionen. | ||
- | return $summa; | ||
- | } | ||
- | |||
- | /* | ||
- | * Funktionen returnerar true om talet är | ||
- | * jämnt och false om det är udda. | ||
- | */ | ||
- | function even($tal){ | ||
- | // Innehållet i funktionen kan förkortas till endast raden: return $tal%2 == 0; | ||
- | if ($tal%2 == 0){ | ||
- | return true; | ||
- | } else { | ||
- | return false; | ||
- | } | ||
- | } | ||
- | |||
- | // Huvudprogram | ||
- | include ' | ||
- | |||
- | $tal1 = 5; | ||
- | $tal2 = 7; | ||
- | echo summa($tal1, | ||
- | |||
- | $x = 4; | ||
- | $y = 6; | ||
- | // Variablerna behöver inte ha samma namn som i funktionen. | ||
- | $sum = summa($x, $y) . '< | ||
- | echo $sum . '< | ||
- | |||
- | // Går att skicka värden direkt. 18 skrivs ut. | ||
- | echo summa(8, | ||
- | |||
- | echo $summa . '< | ||
- | // Blir felmeddelande. $summa finns bara i funktionen. | ||
- | echo $tal1 . '< | ||
- | // Värdet har inte förändrats trots att funktionen har körts. | ||
- | // $tal1 är olika variabler i huvudprogrammet och i | ||
- | // funktionen fast de har samma namn. | ||
- | |||
- | // Alla jämna tal mellan 0 och 20 skrivs ut. | ||
- | $i = 0; | ||
- | while($i <= 20){ | ||
- | if(even($i)){ | ||
- | echo $i . ' '; | ||
- | } | ||
- | $i++; | ||
- | } | ||
- | echo '< | ||
- | |||
- | include ' | ||
- | </ | ||
- | |||
- | |||
- | ==== Exempel 3 ==== | ||
- | |||
- | Funktionen har i detta exempel lagts i en separat fil som heter ' | ||
- | <code php> | ||
- | <?php | ||
- | /* | ||
- | * Funktion som returnerar en sträng med första | ||
- | * tecknet från varje position i arrayen. | ||
- | */ | ||
- | function array_first($arr){ | ||
- | $answer = ''; | ||
- | $i = 0; | ||
- | while($i < count($arr)){ | ||
- | $answer = $answer . substr($arr[$i], | ||
- | $i++; | ||
- | } | ||
- | return $answer; | ||
- | } | ||
- | </ | ||
- | |||
- | Huvudprogram. | ||
- | |||
- | <code php> | ||
- | <?php | ||
- | /* | ||
- | * Funktioner kan läggas i en separat fil och | ||
- | * göras tillgängliga med include. | ||
- | */ | ||
- | include ' | ||
- | |||
- | include ' | ||
- | |||
- | $names = [' | ||
- | // Direkt utskrift av det som returneras. | ||
- | echo array_first($names) . '< | ||
- | |||
- | $animals = [' | ||
- | // Det som returneras sparas i en variabel. | ||
- | $svar = array_first($animals); | ||
- | echo $svar . '< | ||
- | |||
- | include ' | ||
- | </ | ||