Arrays
Een type variabele dat we nog niet behandeld hebben zijn de arrays. Een array is een datastructuur waarin een reeks gegevens opgeslagen is. Je kunt het zien als een variabele die meerdere waarden bevat.
Een array bestaat uit één of meerdere rijen (entries) die allemaal een eigen sleutel, een indentificatie middel, en een waarde hebben. Als je bij het declareren van een array geen sleutel meegeeft aan de waarden, genereert PHP er zelf een. De eerste sleutel is dan 0, de tweede 1, enzovoort.
Het aanmaken van een array
Het declareren van een array gaat bijna hetzelfde als het declareren van een variabele. Alleen geven we nu de variabele niet een normale waarde zoals een string of integer, maar kennen we een array als waarde toe.
De array $aFruit (denk weer even aan de naamgeving van variabelen) bevat nu verschillende items. Om te zien hoe deze array eruit ziet, kunnen we de volgende code gebruiken:
Die print_r() is een functie om de inhoud van een array weer te geven. Later in deze tutorial zullen we dat nog terugzien, voor nu gebruiken we het gewoon.
We zien nu hoe de array $aFruit opgebouwd is. Tussen de blokhaken [] staat de sleutel en achter de => de waarde. Omdat wij bij het declareren geen sleutels opgegeven hebben, heeft PHP die zelf aangemaakt. Merk op dat de eerste sleutel van de array 0 is en niet 1 zoals je misschien zou verwachten.
Associatieve array
Een associatieve array is een array waarbij de sleutels strings zijn. Dit in tegenstelling tot de numerieke array waarbij de sleutels integers zijn. Als we een associatieve array aan willen maken, kunnen we dat op de volgende manier doen:
De array $aFruitAantallen heeft een iets andere indeling. De sleutels zijn nu de fruitsoorten en de bijbehorende waarden geven de aantal van iedere soort. Hoe we deze array op een nette manier kunnen uitlezen, zal ik zodadelijk laten zien.
Uitlezen van waarden uit een array
Om een enkele waarde uit een array uit te lezen, nemen we de variabelenaam van de array en plaatsen we de gewenste sleutel in blokhaken erachter:
De associatieve array kunnen we op precies dezelfde manier uitlezen:
In dit geval moeten we de sleutel wel tussen enkele quotes plaatsen aangezien we met een string te maken hebben. En zoals we weten moeten we strings altijd tussen enkele quotes plaatsen.
Foreach loop
Een andere manier van het uitlezen van een complete array, is het gebruik van een foreach loop. Met deze loop lopen we door alle entries in een array en kunnen we ze weergeven. De syntax van een foreach loop is als volgt:
In deze syntax is $aArray vanzelfsprekend de uit te lezen array. De variabele $sKey is de sleutel van de huidige entry en $sValue de bijbehorende waarde. Het opvragen van $sKey is overigens optioneel, als je dit gedeelte weglaat wordt alleen de waarde in $sValue geladen.
Laten we de inhoud van de array $aFruit eens op het scherm zetten:
appel
peer
banaan
kiwi
Je ziet dat ik hier de variabele $sKey in de foreach loop niet gebruikt hebben. De sleutels van deze array zijn niet interessant, dus hoef ik ze ook niet weer te geven. Dat is echter anders bij onze associatieve array:
appel: 10
peer: 0
banaan: 4
kiwi: 12
Met deze foreach loop hebben we de sleutel van elke entry geladen in de variabele $sFruit en het aantal in $iAantal (what's in the name). Vervolgens kunnen we deze gegevens met een eenvoudige echo op het scherm zetten.
Het toevoegen van waarden aan een array
Nu we gezien hebben hoe we een array aan kunnen maken en de waarden kunnen uitlezen, kunnen we nu kijken naar het toevoegen van waarden aan een array. Hiervoor zijn een aantal verschillende manieren.
De eerste manier is door het gebruik van blokhaken zonder inhoud achter de variabelenaam:
We beginnen met het aanmaken van een lege array $aFruit. Vervolgens voegen we daar op bovenstaande manier twee nieuwe waarden aan toe. Omdat we geen sleutel meegeven zal PHP zelf sleutels toekennen.
Een andere manier is door het gebruik van de functie array_push(). Over functies komen we later nog te spreken, dus neem dit voorbeeld gewoon voor lief:
2
3
4
5
6
7
8
$aFruit = array();
$aFruit[] = 'appel';
$aFruit[] = 'peer';
array_push($aFruit, 'banaan', 'kiwi');
echo '<pre>'.print_r($aFruit, true).'</pre>';
?>
Met deze functie is het dus mogelijk om meerdere variabelen in een keer aan de array toe te voegen. De keuze tussen deze twee methoden is dan ook puur afhankelijk van de situatie. De eerste methode krijgt echter de voorkeur bij associatieve arrays zoals we nu zullen zien.
Associatieve arrays
In het geval van een associatieve array, zullen wederom zelf onze sleutels moeten definiëren. Waarden toevoegen aan een associatieve array lukt dan ook alleen op de manier met blokhaken:
Let ook hier wederom op de quotes die we rond de strings moeten plaatsen.
Multidimensionale arrays
Multidemensionale arrays zijn, zoals het woord al doet vermoeden, arrays met meerdere dimensies. Dat wil zeggen, het zijn arrays in arrays. Dit soort toepassingen van arrays kom je in vrij veel scripts tegen en is bovendien heel handig in het gebruik.
Aanmaken
Het declareren van een multidimensionale array gaat als volgt:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(
[Wintersport] => Array
(
[0] => Westendorf
[1] => Gerlos
[2] => Kitzbhl
[3] => Mayerhofen
)
[Zonvakantie] => Array
(
[0] => Curacao
[1] => Spanje
[2] => Itali
[3] => Brazili
)
)
Zoals je ziet gebruiken we hier een multidimensionale array om een onderscheid te maken van het soort vakanties. Natuurlijk hadden we ook twee aparte arrays voor de wintersport en zonvakanties kunnen gebruiken, maar het is niet nodig.
Uitlezen
Het uitlezen van de multidmensionale array gaat op precies dezelfde manier als elke andere array. Alleen zullen we nu twee sets blokhaken moeten gebruiken om de juiste entry te selecteren:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$aVakantieBestemmingen = array (
'Wintersport' => array (
'Westendorf',
'Gerlos',
'Kitzbühl',
'Mayerhofen'
),
'Zonvakantie' => array (
'Curacao',
'Spanje',
'Italië',
'Brazilië'
)
);
echo 'De wintersport in '.$aVakantieBestemmingen['Wintersport'][3].' was geweldig, maar ik ga volgend jaar toch liever naar '.$aVakantieBestemmingen['Zonvakantie'][1].'.';
?>
Mochten we de array met een foreach loop uit willen lezen, dan zullen we er ook daar twee van moeten gebruiken:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$aVakantieBestemmingen = array (
'Wintersport' => array (
'Westendorf',
'Gerlos',
'Kitzbühl',
'Mayerhofen'
),
'Zonvakantie' => array (
'Curacao',
'Spanje',
'Italië',
'Brazilië'
)
);
foreach($aVakantieBestemmingen as $sSoort => $aLocaties)
{
echo '<b>'.$sSoort.'</b><br />';
foreach($aLocaties as $sLocatie)
{
echo $sLocatie.'<br />';
}
}
?>
Westendorf
Gerlos
Kitzbühl
Mayerhofen
Zonvakantie
Curacao
Spanje
Italië
Brazilië
Het zal in het begin misschien even wennen zijn hoe je deze foreach loops toe moet passen maar als je er eenmaal achter bent, zul je de vele mogelijkheden ervan ontdekken.
Toevoegen
Tenslotte is er nog het toevoegen van nieuwe waarden aan een multidimensionale array. Ook dat kan op verschillende manieren:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Lege array aanmaken
$aVakantieBestemmingen = array ();
// Array toevoegen
$aVakantieBestemmingen['Wintersport'] = array (
'Westendorf',
'Gerlos',
'Kitzbühl',
'Mayerhofen'
);
// Losse entries invoegen
$aVakantieBestemmingen['Zonvakantie'][] = 'Curacao';
$aVakantieBestemmingen['Zonvakantie'][] = 'Spanje';
// Losse entries invoegen met array_push
array_push($aVakantieBestemmingen['Zonvakantie'], 'Italië', 'Brazilië');
echo '<pre>'.print_r($aVakantieBestemmingen , true).'</pre>';
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(
[Wintersport] => Array
(
[0] => Westendorf
[1] => Gerlos
[2] => Kitzbhl
[3] => Mayerhofen
)
[Zonvakantie] => Array
(
[0] => Curacao
[1] => Spanje
[2] => Itali
[3] => Brazili
)
)
Inhoudsopgave
- Inleiding
- Mijn eerste PHP script
- Variabelen
- Statements
- Loops
- Arrays
- Functies
- Formulieren
- Superglobals
- Sessies nader bekeken: een eerste loginscript
- Netjes scripten
- Debuggen: het oplossen van PHP fouten
- Slotwoord en referenties