Programmeren in PHP/Variabelen
Variabelen zijn opslagplaatsen voor waardes. Je kunt dit zien als een snelkoppeling naar een berekening of tekst. Dit kan handig zijn om later met de uitkomst door te rekenen of om te voorkomen dat je steeds dezelfde tekst moet typen.
In PHP gebruik je voornamelijk de volgende typen variabelen. Deze zullen op deze pagina worden uitgelegd.
- Integers (hele getallen)
- Floats (kommagetallen)
- Strings (tekst, leestekens en symbolen)
- Booleans ("waar" (true) of "niet waar" (false))
- Arrays (lijsten)
In dit hoofdstuk wordt gebruik gemaakt van de functie var_dump
in plaats van het tot nu toe gebruikte echo
. Deze functie geeft van de variabele het type en de waarde van de variabele. Voor de verschillende typen variabelen staat hieronder een voorbeeld:
Daarnaast staan de voorbeelden op deze pagina tussen de <pre>...</pre> tags. Dit is om de uitvoer in HTML wat overzichtelijk op het scherm te krijgen (zie het onderstaande voorbeeld met en zonder <pre>...</pre> tags.
PHP-code: var_dump()
<pre>
<?php
var_dump("Hello World!");
var_dump(1234);
var_dump(3.1415);
var_dump(false);
var_dump(true);
var_dump(Array('a','b',1,2));
?>
</pre>
De uitvoer met <pre>...</pre> tags:
string(12) "Hello World!" //De (12) staat hier voor het aantal tekens. int(1234) float(3.1415) bool(false) bool(true) array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> int(1) [3]=> int(2) }
De uitvoer zonder <pre>...</pre> tags:
string(12) "Hello World!" int(1234) float(3.1415) bool(false) bool(true) array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> int(1) [3]=> int(2) }
Variabelen in PHP
bewerkenIn PHP begint iedere variabele met een dollar-teken ($). Het volgende teken moet een letter (a-z, A-Z) of een underscore (_) zijn. Daarna mogen zowel letters, underscores en cijfers (0-9) zijn. Namen van variabelen zijn hoofdlettergevoelig. Het is gebruikelijk om variabelen een korte maar (duidelijke) beschrijvende naam te geven.
PHP-code: Variabelen declareren (aanmaken)
<pre>
<?php
//Maak een string variabele $naam en geef deze de waarde Jan
$naam = "Jan";
echo "Hoi, $naam.";
//Maak een integer variabele $laagGetal en geef deze de waarde 9
//en geef $hoogGetal de waarde 9200
$laagGetal = 9;
$hoogGetal = 9200;
//Tel $laagGetal en $hoogGetal bij elkaar op en geef de optelling weer op het scherm
$antwoord = $laagGetal + $hoogGetal;
echo $laagGetal . " + " . $hoogGetal . " = " . $antwoord;
?>
</pre>
Hoi, Jan. 9 + 9200 = 9209
Wat nieuwe dingen:
- Het = teken stelt in de programmeertaal PHP een variabele gelijk aan de waarde die rechts van het = teken staat,
$eten = "pizza";
stelt $eten gelijk aan pizza. Als dusecho $eten;
zou worden uitgevoerd wordt er pizza op het scherm weergegeven. - Op regel 3 declareren we de variabele $naam met de waarde Jan, die tussen aanhalingstekens staat omdat het een string is. Die waarde wordt gevolgd door een puntkomma om aan te geven dat we klaar zijn met deze regel.
- Op regel 8 en 9 worden twee Integers (getallen) gedeclareerd. Hier kunnen rekenkundige operaties op worden uitgevoerd, zoals optellen (+), aftrekken (-), vermenigvuldigen (*), delen (/), maar ook ingewikkeldere wiskundige functies, zoals kwadrateren of worteltrekken. In dit geval wordt het rekenen op regel 12 gedaan. Hier krijgt de variabele $antwoord de waarde afhankelijk van de twee andere variabelen. Er wordt hier dus geen letterlijke tekst (of getallen) neergezet, maar twee andere variabelen die bij elkaar opgeteld worden (9 + 9200 = 9209).
Weak-typed PHP
bewerkenPHP is weak-typed betreft variabelen. Dat wil zeggen dat het PHP niet uit maakt met wat voor soort variabele je werkt. Een Boolean kan dus net zo goed een Integer zijn en een Integer een String. Je kunt ze ook zonder moeite door elkaar gebruiken. Het is echter aan te raden om dit alleen te doen als het echt niet anders kan. Dit is netter voor je code en je voorkomt foutmeldingen, bijvoorbeeld als deze coulance in de toekomst wordt afgeschaft. In het voorbeeld hierboven werden 2 Integer opgeteld. Dit kan dus ook anders:
PHP-code: Weak-Typed variabelen
<pre>
<?php
$stringGetal = "8";
$gewoonGetal = 100;
$kommaGetal = 10.8;
$booleanGetal = true;
$resultaat = $stringGetal + $gewoonGetal + $kommaGetal + $booleanGetal;
var_dump($stringGetal);
var_dump($gewoonGetal);
var_dump($kommaGetal);
var_dump($booleanGetal);
var_dump($resultaat);
?>
</pre>
string(1) "8" int(100) float(10.8) bool(true) float(119.8)
In bovenstaand stukje code tellen we een String (die een getal voorstelt), een Integer, een Float en een Boolean bij elkaar op. Met de functie var_dump is het type van de variabele $resultaat bepaald: de variabele is een float. Wanneer we deze doorgeven aan de echo functie wordt die echter omgezet in een string. Dit alles gebeurt onder de motorkap van PHP en zelden hoeft de schrijver van het script zich er iets van aan te trekken.
Niet gedeclareerde variabelen
bewerkenEen andere kwestie met variabelen is het vergeten te declareren, bijvoorbeeld als een gebruiker een getal vergeet in te vullen. De meeste programmeertalen geven een foutmelding en stoppen het script (fatal-error) als je dit zou doen, maar PHP geeft alleen een Notice (vorm van foutmelding) en gaat verder met het uitvoeren van het script. Als het nodig is wordt een standaard waarde, bijvoorbeeld 0 of "" (een lege string), aan de variabele gegeven. Hoewel het niet verstandig is om de invoer van een gebruiker niet te controleren maakt deze eigenschap van PHP het programmeren, vooral in het begin, een stukje makkelijker.
PHP-code: Niet gedeclareerde variabele
<pre>
<?php
$a="2";
$b="5";
echo ($a+$b+$c);
?>
</pre>
Dit geeft:
7
Omdat $c
niet gedeclareerd is, wordt de standaard waarde 0 (integer) gebruikt.
Integer
bewerkenEen Integer is een geheel getal. Dus 1587 en -98 zijn integers, maar 3.1415 en 8.95 zijn geen integers.
PHP-code: Integer
<pre>
<?php
$integer = 123;
var_dump($integer);
?>
</pre>
int(123)
Floating Point Number
bewerkenEen Floating Point Number (drijvende komma getal) of Float is een getal dat wordt samengesteld uit een kommagetal en een exponent (een macht van 10). Wanneer de exponent weggelaten wordt neemt PHP aan dat de exponent de waarde 0 heeft.
Geldige floating point numbers zijn:
- 3.1415926535
- 3e+8 (300000000)
- 3e-8 (0.00000003)
- -7.567e+4 (-75670)
- 6.02214e+23
Met een float kunnen grotere getallen opgeslagen worden dan met een integer maar dit gaat ten koste aan de precisie. Dat wil zeggen dat niet elk kommagetal kan worden voorgesteld, maar het zal meestal een benadering zijn. Doubles hebben twee keer zoveel precisie als Floats (vandaar de naam).
String
bewerkenEen string-variabele bevat een reeks letters, cijfers en leestekens in een vaste volgorde. Een string kan dus een woord of een zin zijn, maar het kan ook een tekst van honderden woorden zijn. Een string kan ook een naam, telefoonnummer of e-mailadres zijn.
Een string kan tussen apostrofs (' ') of tussen aanhalingstekens (" ") staan. Wanneer een string tussen aanhalingstekens staat dan worden variabelen die in de string geplaatst zijn vervangen door hun waarde, maar wanneer een string tussen apostrofs staat gebeurt dat niet.
Het volgende voorbeeld maakt dat duidelijk:
PHP-code: Strings met apostrofs of aanhalingstekens
<?php
$leeftijd = 31 ;
echo "Ik ben $leeftijd jaar oud.";
echo "<br>";
echo 'Ik ben $leeftijd jaar oud.';
echo "<br>";
echo 'Ik ben ' . $leeftijd . ' jaar oud.';
?>
Als je dit script uitvoert krijg je:
Ik ben 31 jaar oud. Ik ben $leeftijd jaar oud. Ik ben 31 jaar oud.
De eerste keer dat de regel Ik ben $leeftijd jaar oud. werd ge-echo-d stond deze tussen aanhalingstekens. De inhoud van de variabele $leeftijd
werd daarom in de string geplaatst. De tweede keer werden er apostrofs gebruikt, waardoor er letterlijk '$leeftijd' werd ge-echo-d.
Om bij het gebruik van apostrofs toch een variabele te gebruiken moet een string voor en na de variabelen 'geplakt' worden. In programmeren wordt dit wel concatenating genoemd. In PHP plak je strings aan elkaar met een punt (.). Omdat PHP zo makkelijk is met variabelen omgaat, kunnen integers, floats (doubbles) en booleans (alleen true, ge-echo-d als 1) ook worden geconcateneerd.
Apostrofs en aanhalingstekens in een string
bewerkenHet kan zijn dat je in je tekst apostrofen of aanhalingstekens moet gebruiken:
Dit is Piet z'n fiets. Hij zei: "STOP!". Hij zei: "Dit is Piet z'n fiets.".
Hiervoor zijn twee mogelijkheden. Ten eerste kan je een apostrof weergeven als je aanhalingstekens gebruikt (zie #1) en omgekeerd (zie #2). Dit is vooral handig als je HTML-code moet weergeven, omdat hier bij attributen vaak aanhalingstekens worden gebruikt. Ook kan je het escape teken (backslash: \) gebruiken (zie #3 en #4). Hier kan je ook andere door PHP gebruikte speciale tekens in een string printen.
PHP-code: weergeven van apostroffen en aanhalingstekens
<?php
echo "Dit is Piet z'n fiets.";#1
echo "<br>";
echo 'Hij zei: "STOP!".';#2
echo "<br>";
echo "Hij zei: \"Dit is Piet z'n fiets\".";#3
echo "<br>";
echo 'Hij zei: "Dit is Piet z\'n fiets".';#4
?>
Dit is Piet z'n fiets. Hij zei: "STOP!". Hij zei: "Dit is Piet z'n fiets". Hij zei: "Dit is Piet z'n fiets".
Boolean
bewerkenEen Boolean kan twee waardes hebben: True (waar, 1) of False (onwaar, 0). Booleans worden gebruikt om variabelen of bewerkingen met elkaar te vergelijken, zoals te zien is in het volgende voorbeeld. Zie de als-dan expressie voor meer uitleg over het vergelijken van variabelen.
PHP-code: Boolean
<pre>
<?php
$a = 3;
$b = 5;
//Controleer of $a en $b samen 8 zijn
$isAcht = ( $a + $b == 8);
// Dat is zo, dus de boolean variabele $isAcht zal de waarde true krijgen
//Controleer of $a en $b samen 9 zijn
$isNegen = ( $a + $b == 9);
// Dat is niet zo, dus de boolean variabele $isNegen zal de waarde false krijgen
var_dump($isAcht);
var_dump($isNegen);
?>
</pre>
bool(true) bool(false)
Array
bewerkenLijsten, meestal array's (spreek uit: erreejs) genoemd, worden gebruikt om gezamenlijke gegevens bij elkaar te houden, en om te voorkomen dat je variabele namen als $a1 $a2 en $a3 gaat gebruiken. Een lijst bestaat uit een key (sleutel) en een waarde. De sleutel moet uniek zijn en wordt gebruikt om de juiste waarde te vinden in een array. Een waarde hoeft niet uniek te zijn maar is wel gebonden aan de sleutel/key. Je hebt verschillende soorten array's, namelijk: numerieke en associatieve array's.
Numerieke Lijsten
bewerkenBij numerieke arrays wordt de sleutel meestal niet opgegeven door de programmeur, maar wordt deze ingevuld door PHP zelf. Dit is tevens de meest standaard array. Een numerieke lijst die door PHP aangemaakt is begint altijd met een 0 als sleutel (net zoals in java), in tegenstelling tot de 1 die je zou verwachten. Zo'n lijst maak je als volgt
PHP-code: Numerieke lijsten
<?php
//Een array aanmaken:
$mijnArray = array("Ik","leer","over","de","werking","van","arrays",".");
//Een lege array die je later kunt gebruiken:
$mijnLegeArray = array();
echo '$mijnArray: '; var_dump($mijnArray);
echo '$mijnLegeArray: '; var_dump($mijnLegeArray);
//De waardes uit een array echo-en:
echo '$mijnArray[4]: '; var_dump($mijnArray[4]);
//Waardes aan een array toevoegen:
$mijnArray[] = 'Dit is een nieuwe element aan het eind van $mijnArray.';
//Een waarde overschijven:
$mijnArray[2] = "van";
echo '$mijnArray: '; var_dump($mijnArray);
?>
$mijnArray: array(8) { [0]=> string(2) "Ik" [1]=> string(4) "leer" [2]=> string(4) "over" [3]=> string(2) "de" [4]=> string(7) "werking" [5]=> string(3) "van" [6]=> string(7) "arrays" [7]=> string(1) "." } $mijnLegeArray: array(0) { } $mijnArray[4]: string(7) "werking" $mijnArray: array(9) { [0]=> string(2) "Ik" [1]=> string(4) "leer" [2]=> string(3) "van" [3]=> string(2) "de" [4]=> string(7) "werking" [5]=> string(3) "van" [6]=> string(7) "arrays" [7]=> string(1) "." [8]=> string(53) "Dit is een nieuwe element aan het eind van mijnArray." }
Associatieve lijsten
bewerkenAssociatieve lijsten hebben een woord of zin als sleutel en zijn voor de programmeur makkelijker te lezen dan numerieke lijsten. Let er op dat de namen van de sleutels, net als gewone variabelen, hoofdlettergevoelig zijn.
PHP-code: Associatieve lijsten
<pre>
<?php
//Een associatieve array maken:
$mijnArray = array (
"Ik" => "Mijn naam is Jaap",
"Jij" => "Jouw naam is Piet",
"Leeftijd" => "Mijn leeftijd is 22"
);
//Gegevens echo-en:
echo '$mijnArray["Ik"]: '; var_dump($mijnArray["Ik"]);
//Gegevens wijzigen:
$mijnArray["Jij"] = "Jouw naam is Jantje";
echo '$mijnArray["Jij"]: '; var_dump($mijnArray["Jij"]);
//Gegevens toevoegen:
$mijnArray["nogiets"] = "Deze sleutel is handmatig toegevoegd.";
//Eindresultaat:
echo '$mijnArray: '; var_dump($mijnArray);
?>
</pre>
$mijnArray["Ik"]: string(17) "Mijn naam is Jaap" $mijnArray["Jij"]: string(19) "Jouw naam is Jantje" $mijnArray: array(4) { ["Ik"]=> string(17) "Mijn naam is Jaap" ["Jij"]=> string(19) "Jouw naam is Jantje" ["Leeftijd"]=> string(19) "Mijn leeftijd is 22" ["nogiets"]=> string(37) "Deze sleutel is handmatig toegevoegd." }