<?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 $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, $num){ $i = 0; while($i < count($arr)){ $arr[$i] = $arr[$i] + $num; $i++; } return $arr; // 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 = [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 */