Wat zijn arrays en wat is hun nut?
De saaie theorie
Een array is in eerste instantie een datatype van PHP. Een datatype 'verteld' PHP wat een bepaalde variable bevat. Een array is een speciaal soort type dat weer zelf waarden kan bevatten welke weer van een bepaald datatype zijn. Het makkelijkst is om een array te visualiseren. Denk aan een array alsof het een ladenkast is. In elke lade kan je 1 ding stoppen. Op elke lade zit een label dat OF verteld welke lade het is met een nummer (Dit noemen we een geindexeerde array) OF waarop een label zit dat wat meer verteld wat er in deze lade zit (Dit noemen we een associatieve array). Het label van een geindexeerde array noemen we de index en het label van een associatieve array noemen we een key. De complete lade, dus het label en de inhoud, wordt een element genoemd.
Arrays stellen je in staat om meerdere waarden onder 1 noemer te plaatsen. Dit maakt PHP ideaal voor bijvoorbeeld configuratie variablen. Een ander, veel groter, voordeel van arrays is dat je over arrays kunt 'loopen'. Je kunt dan met een paar regels code over elk element van je array lopen en daar functies mee uitvoeren. Dit zorgt ervoor dat je met relatief weinig typ werk immens veel werk kunt verrichten. Door deze eigenschap lenen arrays zich ook voor een deel aanpasbaarheid van je code.
Hoe gebruik ik een array?
Je kunt arrays op verschillende manieren definiëren. Doordat PHP een zogenaamde Loosely typed language is hoef je een array niet expliciet te definiëren. Door simpelweg een index een waarde te geven maakt PHP van die variable een array. Verder kun je ook WEL expliciet een variable definiëren met de 'functie' array(). Een paar voorbeeldjes:
<?php
/* Expliciete definitie van een geindexeerde array: */
$array = array ('mathieu', 'vincent', 'daniel', 'joris');
/* Expliciete definitie van een associatieve array: */
$array = array ('naam' => 'Mathieu', 'leeftijd' => 18);
/* Impliciete definitie van een geindexeerde array: */
$array[0] = 'PHPFreakz.nl';
/* Impliciete definitie van een associatieve array:
Even ter visualisatie: we definieren een laadje met het label 'site'
en de inhoud 'PHPFreakz.nl' */
$array['site'] = 'PHPFreakz.nl';
?>
Vervolgens zul je over je array element willen loopen. Dit kan op verschillende manieren. Je zult weer onderscheid moeten maken tussen een geindexeerde array en een associatieve array. Al is het mogelijk met de manier van een geindexeerde array over een associatieve array te loopen (wel met een kleine aanpassing) is dit niet aan te raden.
Om over een geindexeerde array te loopen gebruiken we de zogenaamde for-loop. Deze telt tussen 2 waarden die jij opgeeft. In ons geval willen we dus vanaf 0 tot het aantal element in onze array loopen. Om het aantal elementen te bepalen gebruiken we de functie count().
<?php
/* Definieer een array en laat de elementen zien */
$ladenkast = array ('mathieu', 'daniel', 'vincent', 'joris');
$numElementen = count($ladenkast);
for ($label = 0; $label < $numElementen; $label++ ) {
echo $ladenkast[$label] . "<BR>\n";
}
?>
Deze code telt van 0 tot $numElementen en laat daarbij de inhoud van de 'lade' $array[$Counter] zien. Voor associatieve arrays gebruik ik bij voorkeur de foreach() constructie. Deze constructie is overgenomen vanuit Perl en is in PHP 4 geintroduceerd.
Het gebruik ervan is erg simpel:
<?php
/* Definieer een array en laat de elementen zien */
$ladenkast = array ('Naam' => 'Mathieu', 'Leeftijd' => 18);
foreach ($ladenkast as $label => $inhoud) {
echo "$label: $inhoud<BR>\n";
}
?>
Deze code zet de interne 'index pointer' op 0 en loopt vervolgens het rijtje af. Het mooie van deze constructie is dat het 2 variable aanmaakt, in dit geval $label en $inhoud. Je hoeft dan in principe niet meer $ladenkast[$bla] te doen, wat vooral de luie programmeur erg prettig zal vinden

. Deze constructie werkt overgens ook gewoon op geindexeerde arrays.
Tips & Tricks
Hier vind je wat kleine trucjes die het gebruik van arrays misschien wat prettig maken. Als je zelf nog tips hebt hoor ik ze graag van je zodat ik ze hierbij kan zetten!
Controleren of een bepaald element bestaat
Met de functie in_array() kun je heel simpel controleren of een element bestaat in een array. Voorbeeld:
<?php
if (in_array('mijn_waarde', $ladenkast))
echo "'mijn_waarde' bestaat in \$ladenkast!<BR>";
?>
Een element toevoegen aan het begin of het einde van een array
Om je wat moeite te besparen zijn er functies die het mogelijk maken om een element aan het begin, dan wel het einde van je array te plakken:
<?php
$array = array('test1', 'test2', 'test3');
/* Plaats 'test4' aan het einde: */
$array[] = 'test4';
/* Plaats 'test0' aan het begin: */
array_unshift($array, 'test0');
?>