PHP-lessen - les 10 - Arrays
Tot nu toe hebben we alleen numerieke en tekstuele variabelen bekeken, maar in deze les maken we kennis met arrays. Arrays kunnen zowel numerieke als tekstuele waarden bevatten. Daarom heten ze ook verzamelingen van gegevens.
Het idee van een array is eenvoudig: er is een verzameling sleutels en een verzameling waarden. Elke sleutel hoort bij één waarde. Bijvoorbeeld: we hebben sleutels 1, 2, 3 — dan kunnen de waarden zijn: 4, 'Hello World', true. Een array wordt, net als een variabele, aangemaakt met een dollarteken:
$tree = array();
Om een array te maken, gebruiken we de functie array()
.
In feite hoef je een array niet expliciet te declareren, net als variabelen in PHP. Maar om andermans code beter te begrijpen, is het handig om te zien waar variabelen vandaan komen en welk type ze hebben.
Laten we nu de array definiëren die we hierboven hebben genoemd:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); ?>
Let op de syntaxis. Eerst wijzen we een waarde toe aan een variabele, daarna komt het sleutelwoord array
, dat aangeeft dat de variabele een array zal zijn. Binnen de ronde haakjes plaatsen we paren van sleutel en waarde.
Ze worden als volgt geschreven:
array( sleutel1 => waarde1, sleutel2 => waarde2, );
Eerst komt de sleutel, daarna het teken =>, gevolgd door een spatie en de bijbehorende waarde. Elke sleutel/waarde-paar wordt gescheiden door een komma. Zo bouw je de hele array op.
Een array kan ook op één regel worden geschreven:
<?php $tree = array(1 => 4, 2 => 'Hello World', 3 => true,); ?>
De array $tree
is in beide gevallen hetzelfde. De meerregelige versie is echter beter leesbaar. Over conventies praten we later — voor nu is het belangrijk dat je het principe begrijpt.
Om een array af te drukken, gebruiken we de functie print_r()
. In tegenstelling tot print
gebruikt deze functie haakjes:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print_r($tree); ?>
Dit zal de array afdrukken als:
Array ( [1] => 4 [2] => Hello World [3] => 1 )
Als we de tag <pre>
toevoegen, ziet de uitvoer er overzichtelijker uit:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print '<pre>'; print_r($tree); print '</pre>'; ?>
Dan krijgen we:
Array ( 1 => 4, 2 => 'Hello World', 3 => true, )
Nu we weten hoe we arrays kunnen maken, laten we eens kijken hoe we gegevens eruit kunnen halen:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); print $tree[2]; ?>
Zo halen we het tweede element ('Hello World') op en tonen het op het scherm. Om een waarde op te vragen, schrijf je de naam van de array en tussen vierkante haken de sleutel. Zo kun je ook $tree[1]
of $tree[3]
gebruiken.
Om een element toe te voegen, geef je gewoon een lege sleutel op:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[] = 'Nog een element'; print '<pre>'; print_r($tree); print '</pre>'; ?>
Resultaat:
Array ( [1] => 4 [2] => Hello World [3] => 1 [4] => Nog een element )
Zoals je ziet, voegt PHP automatisch de volgende sleutelwaarde toe. Je kunt echter ook een eigen sleutel opgeven:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[6] = 'Ander element'; print '<pre>'; print_r($tree); print '</pre>'; ?>
In dit geval hebben we de sleutels 1, 2, 3 en 6 — en dus ontbreken 4 en 5. Onthoud dus dat als er sleutels 103 en 105 zijn, dit niet betekent dat sleutel 104 bestaat. Dat kun je controleren met:
if(empty($tree[104])){ }
Als je een sleutel gebruikt die al bestaat, wordt de waarde overschreven:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 3 => true, ); $tree[3] = 'Ander element'; print '<pre>'; print_r($tree); print '</pre>'; ?>
Er wordt geen nieuw element toegevoegd, maar de waarde van de derde sleutel wordt vervangen.
Een sleutel kan ook een tekst zijn:
<?php $tree = array( 1 => 4, 2 => 'Hello World', 'key3' => true, ); print '<pre>'; print_r($tree); print '</pre>'; ?>
In dat geval schrijf je de sleutelwaarde tussen aanhalingstekens (enkel of dubbel). En om de waarde op te vragen:
print $tree['key3'];
Ik denk dat het nu duidelijk is hoe arrays werken… voorlopig althans, want nu gaan we kijken naar meerdimensionale arrays.
PHP – meerdimensionale arrays
Zoals de naam aangeeft, hebben meerdimensionale arrays meerdere niveaus. Een eenvoudig voorbeeld is een vermenigvuldigingstabel — we hebben twee getallen en een resultaat dat van beide afhangt.
<?php $multi = array(); $multi[1][1] = 1; $multi[1][2] = 2; $multi[1][3] = 3; $multi[2][1] = 2; $multi[2][2] = 4; $multi[2][3] = 6; $multi[3][1] = 3; $multi[3][2] = 6; $multi[3][3] = 9; print '<pre>'; print_r($multi); print '</pre>'; ?>
In een eendimensionale array hebben we één sleutel, in een tweedimensionale twee, enzovoort. De volgorde van de sleutels is belangrijk — $multi[1][3]
en $multi[3][1]
zijn verschillende waarden.
<?php $multi = array(); $multi[1][3] = 3; $multi[3][1] = 'Hello, World!'; print '<pre>'; print_r($multi); print '</pre>'; ?>
Je kunt ook direct arrays met meerdere waarden definiëren:
<?php $multi = array( 1 => array( 1 => 1, 2 => 2, 3 => 3, ), 2 => array( 1 => 2, 2 => 4, 3 => 6, ), 3 => array( 1 => 3, 2 => 6, 3 => 9, ), ); print '<pre>'; print_r($multi); print '</pre>'; ?>
Als ik later nog meer voorbeelden van arrays tegenkom, voeg ik ze toe — maar nu gaan we door naar de volgende les.