This is an old revision of the document!
Genomgång 9 - Funktioner (referenser och default)
<?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(&$tal){ $ental = $tal%10; // % ger resten $tiotal = (int)($tal/10); // För att få heltalsdelen. $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($arr1,$num){ $i = 0; while($i < count($arr1)){ $arr1[$i] = $arr1[$i] + $num; $i++; } return $arr1; // Returnerar en array. } // 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(&$arr,$num){ $i = 0; while($i < count($arr)){ $arr[$i] = $arr[$i] + $num; $i++; } } include('head.php'); $tal1 = 18; echo 'tal1: ' . $tal1 . '<br>'; echo 'thousands($tal1): ' . thousands($tal1) . '<br>'; echo 'thousands(): ' . thousands() . '<br>'; echo 'tal1: ' . $tal1 . '<br>'; backwards($tal1); echo 'tal1 efter backwards: ' . $tal1 . '<br>'; $arr1 = array(1,3,4); $arr2 = arrayadd($arr1,5); print_r($arr1); echo ' $arr1 <br>'; print_r($arr2); echo ' $arr2 <br>'; arrayadd2($arr1,10); print_r($arr1); echo ' $arr1 <br>'; include('foot.php'); /* Följande skrivs ut när programmet körs: tal1: 18 thousands($tal1): 18000 thousands(): 1000 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 */