This is an old revision of the document!


Genomgång 8 - Funktioner

<?php
 
/*
 * En funktion kan ha flera parametrar och kan
 * returnera ett värde.
 *
 * $tal1 och $tal2 är inte samma variabel som 
 * i huvudprogrammet fast de heter likadant. 
 * Blir en kopia av variablerna i huvudprogrammet.
 */
function summa($tal1, $tal2){
  $summa = $tal1 + $tal2;
  $tal1 = 1000;  // $tal ändras bara i funktionen.
  $test = 'teststräng';    // $test finns bara i funktionen
  echo $test . '<br>';
  return $summa;   // Skickar tillbaka svaret.
}
 
/*
 * En funktion kan vara utan parametrar och
 * behöver inte returnera något. Denna funktion
 * skriver bara ut en rad med stjärnor.
 */
function stars(){
  echo '************************<br>';
}
 
/*
 * Denna funktion skriver ut lika många stjärnor
 * som värdet på parametern $n.
 */
function stars2($n){
  $i = 0;
  while($i < $n){
    echo '*';
	$i++;
  }
  // Ny rad skrivs ut när alla stjärnor
  // är utskrivna.
  echo '<br>';  
}
 
/*
 * Funktionen returnerar true om talet är
 * jämnt och false om det är udda.
 */
function even($tal){
  if ($tal%2 == 0){
    return true;
  } else {
    return false;
  }  
}
 
/* 
 * Har man många funktioner kan det vara
 * bra att lägga dessa i en separat fil och
 * göra dem tillgängliga med include.
 */
include('functions.php');
 
include('head.php');
 
// php har en massa färdiga funktioner, bl.a. för strängar.
// Värdet som returneras kan skrivas ut eller
// sparas i en variabel.
echo strrev('.dlrow olleH') . '<br>';
$text='dallas';
$text2=strrev($text);
echo $text2 . '<br>';
 
$tal1 = 5;
$tal2 = 7;
// 12 5 skrivs ut, d.v.s. $tal1 ändras inte fast det
// förändras i funktionen. $tal1 är olika variabler
// i huvudprogrammet och i funktionen fast de har samma namn.
echo summa($tal1,$tal2) . ' ' . $tal1 . '<br>';
// Blir felmeddelande. $test finns bara i funktionen.
echo $test . '<br>';
 
$x = 4;
$y = 6;
// Variablerna behöver inte ha samma namn som
// i funktionen. 10 skrivs ut.
echo summa($x, $y) . '<br>';
 
// Går att skicka värden direkt. 18 skrivs ut.
$sum = summa(8,10);
echo $sum . '<br>';
stars();
// Funktioner är bra om man vill göra samma sak
// på flera ställen i koden.
stars2(5);
stars2(10);
stars2(20);
 
// Alla jämna tal mellan 0 och 20 skrivs ut.
$i = 0;
while($i <= 20){
  if(even($i)){
    echo $i . ' ';
  }
  $i++;
}
echo '<br>';
 
include('foot.php');