PHP variabler og regneoperasjoner

I denne delen av PHP tutorialen skal vi snakke om regneoperasjoner ved hjelp av logiske operatorer (logical operators). Man får ofte bruk for å regne ut ting i PHP, særlig når man skal regne ut tidsrelevante ting. Ved utregning av tidsrelevante ting bruker man ofte antall sekunder fra 01.01.1970, mer om dette i en senere guide.

Her er ei liste over hvilke logiske operatorer du har til rådighet, når du skal regne ut ting i PHP.

  • * stjernen brukes når man skal gange (multiplisere)
  • / forover slash brukes når man skal gange (dividere)
  • + pluss brukes når man skal plusse (addere)
  • - minus brukes når man skal trekke fra (subtrahere)
  • Man bruker ofte parenteser på matematiske uttrykk. Dette gjelder også i PHP

Det kan kanskje virke litt nedlatende å introdusere de fire regnearter, men heller sagt enn usagt.

Matematiske regneoperasjoner i PHP

Du har ikke installert Flash på datamaskinen din. Du trenger minimum flash 8 for å kunne se denne videoen.

Her er noen digresjoner i tillegg til det du finner i PHP tutorialen ovenfor.

Logical operators i PHP

Noen ganger ønsker vi å legge til eller trekke fra 1, da kan vi bruke increment eller decrement. Her er et par eksempler.

Increment

<?php
$tall
= 1;      // Tallet er 1
$tall++;        // Legger til 1
print $tall;    // Output er 2
?>

Ved å bruke ++ vil man øke tallet med 1. Skal man trekke fra 1, bruker man decrement

Decrement

<?php
$tall
= 200;    // Tallet er 200
$tall--;        // Trekker fra 1
print $tall;    // Output er 199
?>

Her trekker man altså fra 1. Man kunne gjort begge disse tingene på en annen måte, men det ville krevd mer koding.

<?php
$tall
= 500;
$tall = $tall + 1; // Tallet blir 501
$tall = $tall - 1; // Tallet blir 499
?>

Regne ut med parenteser i PHP

Ofte vil man ha bruk for parenteser i matematiske uttrykk. Dette gjelder spesielt hvis man skal legge sammen to tall, og deretter multiplisere eller dividere tallet med noe. La oss ta et eksempel.

<?php
$var
= 10;
$multiplicator = 5;
$add = 5;

# 10 + 5 * 5 = 35
print $var + $add * $multiplicator; // Printer ut 35
?>

Hvis meningen var å legge sammen 10 og 5. for så å gange svaret med 5, vil man måtte bruke parenteser, slik

<?php
# (10 + 5) * 5 = 75
$answer = ($var + $add) * $multiplicator;
print
$answer; // Printer ut 75
?>

Enda mer generalisert og effektivt PHP script

I videoen ovenfor brukte vi ikke generalisering til det fulle, hadde vi villet lage et script som både tok høyde for skuddårsdager og generaliserte mer, kunne vi gjort det slik.

<?php
# Variabler
$years = 10;
$days_year = 365;
$hours_day = 24;
/*
    Legger til skuddårsdager.
    floor er en funksjon som runder av til nærmeste heltall (integer) nedover.
    Feks er 10 / 4 = 2.5, men det er ikke en halv skuddårsdag i 10 år.
    Vi deler på 4, fordi det er skuddår hvert fjerde år.
*/
$extra_days = floor($years / 4);

# Totale dager = 10 * 365 + 2 = 3652
$total_days = $years * $days_year + $extra_days;

# Totale timer = 3652 * 24 = 87 648
$total_hours = $total_days * $hours_day;
?>

Legg merke til hvordan vi bruker ferdig utregnede variabler nedover i PHP scriptet. Endrer vi variabelen $years = 10; til et annet antall år, så vil også alle andre verdier endre seg, fordi denne variabelen er fundamentet i alle regnestykkene nedover i skriptet.

Dog skal man merke seg at scriptet ovenfor ikke tar høyde for når skuddåret er. Hvis det er skuddår det første året, vil man få skuddår også det fjerde og det åttende, altså 3 skuddårsdager og ikke 2. Man kunne ha funnet ut når sist skuddår var ved å bruke funksjoner o.l, men det blir for bredt til å ta opp denne gangen.