<?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
*/