§ 4 Arrays
In bijna alle programmeer- en scripttalen is het mogelijk om met arrays te werken. Zo ook in PHP. We gaan nu kijken naar wat arrays zijn en hoe je ze kunt gebruiken.
4.1 Wat zijn arrays?
Een array is een variabele die meerdere waardes tegelijk kan bevatten. Je kunt de individuele waardes uit een array benaderen door een indexgetal te gebruiken. Bekijk het onderstaande stukje PHP code:
<?php $mijnArray = array("hallo", "ik", "ben", "een", "array"); print $mijnArray[0]; ?>
In de eerste regel code wordt het array gevuld. In dit geval hebben we het array $mijnArray genoemd (het is dus gewoon een variabele). We hebben het array gevuld met 5 waardes, namelijk de Strings: "hallo","ik","ben","een" en "array".
In de tweede regel staat een print statement, dus we drukken iets af op het scherm. Wat drukken we af? Het eerste element uit het array. Het resultaat van deze code zal dus zijn dat er "hallo" op het scherm wordt afgedrukt.
Let op, PHP begint te tellen bij 0! Onze array heeft dus 5 waarden, maar je moet deze waarden benaderen met $mijnArray[0] t/m $mijnArray[4].
Je kunt de waardes van een array veranderen. Dit gaat ongeveer op dezelfde manier als het opvragen van de waarde. Bekijk de volgende code:
<?php $mijnArray = array("hallo", "ik", "ben", "een", "array"); print $mijnArray[0]; $mijnArray[0] = "dag"; print $mijnArray[0]; ?>
Het resultaat van de code zal zijn dat eerst het woord hallo wordt afgedrukt, gevolgd door het woord dag.
4.2 Nuttige array operaties
Er zijn een aantal handige operaties die je op arrays kunt gebruiken. Bekijk de code:
<?php $mijnArray = array(1,2,3,4,5); print count($mijnArray); print "
"; $mijnArray[] = 6; print count($mijnArray); ?>
Met de operatie count() kun je de lengte van een array opvragen. Dat betekent dat de uitkomst het getal is van het totaal aantal elementen in de array. De regel $mijnArray[] = 6 voegt het getal 6 toe als element achter aan het array.
In de code wordt dus de lengte van het array afgedrukt. Vervolgens wordt er een element aan het array toegevoegd. Tenslotte wordt weer de lengte van het array afgedrukt. De uitkomst zal er als volgt uit zien:
5
6
Er zijn ook functies om de elementen van een array om te draaien en om de elementen te sorteren:
<?php $mijnArray = array(2,1,5); print $mijnArray[0], $mijnArray[1], $mijnArray[2]; print "<br>"; $mijnArray2 = array_reverse($mijnArray); print $mijnArray2[0], $mijnArray2[1], $mijnArray2[2]; print "<br>"; sort($mijnArray); print $mijnArray[0], $mijnArray[1], $mijnArray[2]; print "<br>"; ?>
In het eerste blok wordt een array gevuld met 3 elementen en afgedrukt. In het tweede blok wordt dat array omgedraaid en afgedrukt. In het derde blok wordt het array gesorteerd en afgedrukt. De uitkomst ziet er als volgt uit:
215
512
125
4.3 Arrays doorlopen met for-loop
Het handige aan arrays is dat je makkelijk door de elementen heen kunt lopen met een loopje. Bekijk de volgende code:
<?php $mijnArray = array("pindakaas","is","lekker"); for ($i=0; $i<3; $i++) { print $mijnArray[$i]; print "<br>"; } ?>
De uitkomst van deze code zal zijn:
pindakaas
is
lekker
We kunnen dit ook op een nog slimmere manier doen:
<?php $mijnArray = array("pindakaas","is","lekker"); for ($i=0; $i<count($mijnArray); $i++) { print $mijnArray[$i]; print "<br>"; } ?>
4.4 2D arrays
We hebben al gezien dat de elementen van een array verschillende soorten waardes kunnen hebben, bijvoorbeeld getallen of Strings. Maar wat dacht je er van als de elementen van een array ook arrays zijn? Dan krijg je dus een array van arrays, ofwel een tweedimensionaal array. Bekijk de volgende code:
<?php $rij1 = array(1,2,3); $rij2 = array(4,5,6); $rij3 = array(7,8,9); $multi = array($rij1, $rij2, $rij3); print ($multi[0][2]); ?>
In de code worden eerst 3 arrays van 3 elementen aangemaakt. Vervolgens wordt er een nieuw array gemaakt met als elementen de bovenstaande arrays. Daarna wordt het derde element van de eerste array afgedrukt naar het scherm. Let weer op dat we beginnen te tellen bij 0! De uitvoer zal zijn:
3
Ook 2D arrays kunnen met een loop worden doorlopen. Omdat je twee dimensies hebt, heb je ook een dubbele loop nodig. Dit heeft deze vorm:
for ($i=0; $i<10; $i++) { for ($j=0; $j<10; $j++) { //code voor elk element } }
4.5 Arrayfuncties voor weergave databasegegevens
Als je met PHP en MySQL gegevens uit een MySQL database haalt, kom je ook in aanraking met arrays. Als je een query uitvoert en de functie mysql_fetch_array() gebruikt, dan krijg je een rij uit de database als array terug. De elementen van dit array zijn de waardes van de verschillende velden van die regel uit de database. Kijk in paragraaf 5.5 van deze module voor een voorbeeld.