Differences
This shows you the differences between two versions of the page.
dvprog_12 [2019-09-09 09:24] Daniel Viström |
dvprog_12 [2022-07-18 13:20] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Genomgång 9 - Funktioner (referenser och default) ====== | ||
- | <code php> | ||
- | <?php | ||
- | |||
- | // Defaultvärde kan anges för en parameter. | ||
- | // Det används om inget annat skickas till funktionen. | ||
- | function thousands($tal = 1) { | ||
- | return $tal*1000; | ||
- | } | ||
- | |||
- | // & betyder att man skickar en referens istället för att | ||
- | // göra en kopia av värdet. Man får ett nytt namn på samma | ||
- | // variabel (samma minnesposition). Ändras värdet i funktionen | ||
- | // så ändras det även i huvudprogrammet. | ||
- | function backwards(& | ||
- | $ental = $tal % 10; // % ger resten | ||
- | $temp = (int)($tal / 10); // För att få heltalsdelen. | ||
- | $tiotal = $temp % 10; | ||
- | $tal = $tiotal + 10 * $ental; // Vänder på talet. | ||
- | } | ||
- | |||
- | // Funktionen adderar $num till alla tal i arrayen. | ||
- | // I php får man en kopia av arrayen i funktionen. | ||
- | // (I många andra språk skickas arrayer alltid som referens.) | ||
- | // Ändras arrayen i funktionen händer inget med den | ||
- | // i huvudprogrammet. | ||
- | function arrayadd($arr, | ||
- | $i = 0; | ||
- | | ||
- | | ||
- | $i++; | ||
- | } | ||
- | | ||
- | } | ||
- | |||
- | // I denna funktion skickas bara en referens till | ||
- | // den array som finns i huvudprogrammet. Det blir | ||
- | // ett nytt namn till samma array. När arrayen ändras | ||
- | // i funktionen ändras den även i huvudprogrammet. | ||
- | function arrayadd2(& | ||
- | $i = 0; | ||
- | | ||
- | | ||
- | $i++; | ||
- | } | ||
- | } | ||
- | |||
- | include ' | ||
- | $tal1 = 18; | ||
- | echo 'tal1: ' . $tal1 . '< | ||
- | echo ' | ||
- | echo ' | ||
- | |||
- | echo 'tal1: ' . $tal1 . '< | ||
- | backwards($tal1); | ||
- | echo 'tal1 efter backwards: ' . $tal1 . '< | ||
- | |||
- | $arr1 = [1,3,4]; | ||
- | $arr2 = arrayadd($arr1, | ||
- | print_r($arr1); | ||
- | echo ' $arr1 < | ||
- | print_r($arr2); | ||
- | echo ' $arr2 < | ||
- | |||
- | arrayadd2($arr1, | ||
- | print_r($arr1); | ||
- | echo ' $arr1 < | ||
- | |||
- | include ' | ||
- | |||
- | /* | ||
- | Följande skrivs ut när programmet körs: | ||
- | |||
- | tal1: 18 | ||
- | thousands($tal1): | ||
- | thousands(): | ||
- | tal1: 18 | ||
- | tal1 efter backwards: 81 | ||
- | Array ( [0] => 1 [1] => 3 [2] => 4 ) $arr1 | ||
- | Array ( [0] => 6 [1] => 8 [2] => 9 ) $arr2 | ||
- | Array ( [0] => 11 [1] => 13 [2] => 14 ) $arr1 | ||
- | |||
- | */ | ||
- | |||
- | </ |