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');
?>