Anders Genomgång 09 - Funktioner (Referenser och Default)
<?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(&$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 array_add($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 array_add2(&$arr,$num){
$i = 0;
while($i < count($arr)){
$arr[$i] = $arr[$i] + $num;
$i++;
}
}
include('head.php');
$tal1 = 18;
echo 'thousands($tal1): ' . thousands($tal1) . '<br>';
echo 'thousands(): ' . thousands() . '<br><br>';
echo 'tal1: ' . $tal1 . '<br>';
backwards($tal1); // Funktionen har en referensparameter.
echo 'tal1 efter backwards: ' . $tal1 . '<br>';
$arr1 = array(1,3,4);
$arr2 = array_add($arr1,5);
echo '$arr1: ';
print_r($arr1);
echo '<br>';
echo '$arr2: ';
print_r($arr2);
echo '<br>';
array_add2($arr1,10);
echo '$arr1: ';
print_r($arr1);
echo '<br>';
include('foot.php');
?>