Terugkeerwaarde

Soms is het handig om functies te schrijven die een waarde als output opleveren. Dit wordt mogelijk gemaakt door bij het aanroepen van de functie aan een variabele een waarde toe te kennen. Het maakt daarbij niet uit welk datatype die variabele heeft.

Het volgende voorbeeld zal een en ander verduidelijken. Stel we hebben een bedrijf en we moeten de verkoopprijs van producten gaan bepalen. Daar hoort in veel gevallen het tarief van 21% BTW bij. Het zou handig zijn als we in een functie in een keer het eindbedrag voor de klant zouden kunnen bepalen. We noemen deze functie bereken_eindprijs().

Hoe gaan we te werk?

Het script wordt dan:

<?php
    $prijs = 24.95;
    $btw = .21;       //Je hoeft niet 0.21 te typen.
      function bereken_eindprijs($p, $b)
      {
          return $p + ($p*$b);
      }
      // Let op hoe de functie bereken_eindprijs() de waarde terug geeft.
      $eindprijs = bereken_eindprijs($prijs, $btw);
      // Rond het bedrag af op twee decimalen.
      $eindprijs = number_format($eindprijs, 2);
      echo "Verkoopprijs zonder btw = &euro; $prijs<br>\n";
      $tarief = 100 * $btw;
      echo "BTW-tarief = $tarief<br>\n";
      echo "De eindprijs = &euro; $eindprijs";
?>

Met als resultaat:

Het is ook mogelijk om functies met returnwaarden rechtstreeks in controlestructuren te gebruiken.
Stel we willen online gaan shoppen bij een webwinkel. Deze webwinkel hanteert voor klanten een kredietlimiet. Telkens als een klant iets in zijn winkelwagentje stopt, wordt het bedrag dat hij moet betalen bij de andere gekochte producten opgeteld en wordt dat totaalbedrag vergeleken met de kredietlimiet van de klant. Als de toegestane limiet wordt overschreden, krijgt de klant een melding dat de limiet is overschreden en met welk bedrag. Indien de limiet nog niet is overschreden, krijgt de klant een melding voor welk bedrag er nog aankopen kunnen worden gedaan. De code daarvoor wordt:

<?php
   $aankoopbedrag = 234.50;
   $kredietlimiet = 500.00;
   function check_kredietlimiet($aankoopbedrag, $kredietlimiet)
   {
           if($aankoopbedrag > $kredietlimiet) {
                return false;
           }
           else {
                return true;
           }
   }
   if (check_kredietlimiet($aankoopbedrag, $kredietlimiet)) {
           $bestedingsbedrag = number_format(($kredietlimiet -
           $aankoopbedrag),2);


           echo "Winkel gerust nog nog even door! <br>";
           echo "U bent nog &euro; " . $bestedingsbedrag . " verwijderd
           van uw kredietlimiet.";
   }
   else {
           $overschrijding = number_format(($aankoopbedrag -
           $kredietlimiet),2);
           echo "Uw aankoopbedrag overstijgt de kredietlimiet met &euro;
           ". $overschrijding ."!";
   }
?>

 

Hoe werkt de functie check_kredietlimiet()?
De functie heeft 2 parameters: $aankoopbedrag en $kredietlimiet. Als het aankoopbedrag groter is dan de kredietlimiet geeft de functie de returnwaarde of terugkeerwaarde 0 (false). Zo niet dan is de returnwaarde 1(true). Als de functie bij de check een 0 geeft, betekent dat dat de vergelijking $aankoopbedrag > $kredietlimiet niet klopt en dus het aankoopbedrag de kredietlimiet niet overstijgt, waardoor dus een 1 als returnwaarde moet worden weergegeven.