Je ziet dit bericht omdat de EU dat een goed idee vindt. Deze website maakt gebruik van cookies van Google voor het tonen van advertenties en het bijhouden van bezoekersstatistieken. Google kan hiermee je surfgedrag volgen. Zie voor meer informatie het privacybeleid van Google. Via Your Online Choices kun tracking cookies van advertentiebedrijven blokkeren. Deze melding verbergen.

17 Wiskundige bewerkingen

Tot nu toe hebben we vooral functies gezien die met teksten werken. Maar PHP kan ook rekenen. Naast basisbewerkingen zoals optellen en vermenigvuldigen zijn er ook functies voor meer complexe wiskundige berekeningen, zoals worteltrekken, sinus, maximum, afronden, etc.

Theorie

Rekenen in PHP kan direct met getallen, maar ook met variabelen. Al eerder hebben we gezien dat we een variabele steeds met één kunnen ophogen in een lus. Maar ook los van lussen kunnen er allerlei berekeningen op variabelen worden losgelaten.

Waarschuwing over kommagetallen

PHP kan rekenen met integers (gehele getallen) en met floats (kommagetallen). Computers zijn heel goed in het rekenen met integers, maar wat minder goed met floats, als het op nauwkeurigheid aan komt. Dit komt omdat wij gewend zijn te rekenen in het decimale stelsel met getallen 0 tot en met 9. Computers rekenen in het binaire stelsel met enkel nullen en enen. Dit binaire stelsel kent geen kommagetallen, waardoor computers op de achtergrond de kommagetallen benaderen om er toch mee te kunnen rekenen. Zo levert de berekening (0.7 + 0.1) * 10 niet zoals we geleerd hebben precies 8 op, maar komt de computer op iets als 7.9999999999999991118.... Het verschil met acht is heel klein, maar deze nauwkeurigheidsfouten kunnen bij uitgebreide berekeningen toch grote verschillen opleveren.

In het algemeen is dit geen groot probleem, maar let op wanneer nauwkeurigheid echt van belang is. Bijvoorbeeld bij het rekenen met geld kan het geen kwaad om in centen te rekenen. Alle getallen blijven dan integers en nauwkeurheidsfouten kunnen zo vrij makkelijk voorkomen worden. Let ook goed op bij het gebruiken van kommagetallen in vergelijkingen. Probeer het volgende maar eens, inmiddels niet meer geheel onverwacht geeft dit onwaar!

<?php
if (((0.7 + 0.1) * 10) == 8) {
    echo
'waar';
}
else {
    echo
'onwaar';
}
?>

Tot slot, PHP gebruikt net als in Engelstalige gebieden de punt en niet de komma als decimaalscheidingsteken. Er wordt geen gebruik gemaakt van een duizendtallenscheidingsteken.

Basisberekeningen

Basisberekeningen worden uitgevoerd door eenvoudigweg het gewenste bewerkingsteken – zoals optellen, aftrekken en vermenigvuldigen – tussen de variabelen of getallen in te plaatsen. Net als in de wiskunde geldt dat vermendigvuldigen en delen boven optellen en aftrekken gaan, dus gebruik waar nodig haakjes om de juiste berekening uit te voeren. Tabel 17.1 bevat een overzicht van de beschikbare bewerkingtekens en hun betekenis.

Tabel 17.1: Rekenkundige bewerkingstekens
Berekening Naam Resultaat Voorbeeld
-$a Negatief Het tegenovergestelde van $a. -(3) = -3
$a + $b Optellen De som van $a en $b. 2 + 3 = 5
$a - $b Aftrekken Het verschil van $a en $b. 2 - 3 = -1
$a * $b Vermenigvuldigen Het product van $a en $b. 2 * 3 = 6
$a / $b Delen Het quotient van $a en $b. 6 / 3 = 2
$a % $b Modulus De rest van $a gedeeld door $b.
Werkt alleen betrouwbaar op integers.
5 % 2 = 1
$a ** $b Machtsverheffen Het resultaat van $a tot de macht $b ($a$b).
Beschikbaar sinds PHP 5.6. Voor oudere versies gebruik pow($a, $b).
2 ** 3 = 8

Wiskundige functies

Naast de rekenkundige bewerkingstekens zijn er ook functies om wiskundige bewerkingen uit te voeren. In tabel 17.2 is een overzich gegeven van een groot aantal wiskundige functies. Zie de PHP handleiding voor een overzicht van alle wiskundige functies.

Tabel 17.2: Wiskundige functies
Functies Naam Resultaat
round($a, $b) Afronden Geeft $a afgerond op $b decimalen.
Gebruik round($a, 0) om af te ronden op integers.
floor($a) Afronden naar beneden Geeft $a als integer naar beneden afgerond.
ceil($a) Afronden naar boven Geeft $a als integer naar boven afgerond.
abs($a) Absoluut Geeft de absolute waarde van $a.
min($a, $b) Minimum Geeft de kleinste waarde van $a en $b.
Deze functie accepteert ook een array als variabele.
max($a, $b) Maximum Geeft de grootste waarde van $a en $b.
Deze functie accepteert ook een array als variabele.
pow($a, $b) Machtsverheffen Geeft het resultaat van $a tot de macht $b ($a$b).
Sinds PHP 5.6 kan ook $a ** $b gebruikt worden.
sqrt($a) Worteltrekken Geeft de vierkantswortel van $a.
exp($a) Exponent Geeft het exponent van $a (e$b).
log($a) Natuurlijke logaritme Geeft de natuurlijke logaritme van $a.
log10($a) Briggse logaritme Geeft de Briggse logaritme (10-log) van $a.
pi() Pi Geeft een benadering van pi. Standaard met veertien cijfers achter de komma.
sin($a) Sinus Geeft de sinus van $a.
cos($a) Cosinus Geeft de cosinus van $a.
tan($a) Tangens Geeft de tangens van $a.
asin($a) Boogsinus Geeft de boogsinus (arcsinus) van $a.
acos($a) Boogcosinus Geeft de boogcosinus (arccosinus) van $a.
atan($a) Boogtangens Geeft de boogtangens (arctangens) van $a.

Willekeurige getallen

De functie mt_rand() kan gebruikt worden om een willekeurige integer te genereren.

int mt_rand ( [ int $min , int $max ] )

mt_rand() geeft een willekeurige integer tussen (inclusief) $min en $max. Wanneer $min en $max worden weggelaten, dan wordt een willekeurige integer tussen 0 en 2147483647 gegenereerd. Merk op dat deze functie niet zuiver willekeurig is. Wanneer oneindig vaak uitgevoerd zullen bepaalde getallen vaker voorkomen.