4. Reeksvariabelen of arrays

Een array of reeksvariabele of rij is een datatype waarin een aantal waarden (values) samen onthouden kunnen worden.

4.1. Declaratie en initialisatie

In PHP moet je niet expliciet het aantal elementen van een array declareren; dat blijkt wel uit het gebruik.
Bovendien kan je waarden van verschillende types in één array opnemen.

Een array vullen kan op twee manieren:
methode 1:$dagen = array("maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag");
methode 2:$dagen[0] = "maandag";
  $dagen[1] = "dinsdag"; enz.

Je mag zelfs de index weglaten: $dagen[] = "maandag";

Behalve 'gewone' arrays met een numerieke index, kent PHP ook associatieve reeksvariabelen, waarbij elk element bestaat uit een ID (key) en een waarde (value).
De key moet een integer of een string zijn.
methode 1:$leeftijd = array("Peter"=>32, "Ann"=>30, "Jan"=>34);
methode 2:$leeftijd['Peter'] = 32;
  $leeftijd['Ann'] = 30;
  $leeftijd['Jan'] = 34;

Een foreach is erg handig om zo'n associatieve array af te lopen:
foreach($varNaam as $key => $value) {
  statement(s) met elke $key en/of $value in;
}

Om snel de inhoud van een array te tonen kan je var_dump(arrayNaam); gebruiken.
Anderzijds is er ook de functie print_r($varNaam) die hetzelfde doet.
print_r() zet de pointer aan het einde van de array; gebruik reset() om de pointer terug aan het begin te zetten.

In een meerdimensionele array kan elk element zelf weer een array zijn, evenals elk subelement enz.
bv: $kinderen = array("Janssens"=>array("Piet","Mieke","Els"), "Wouters"=>array("Wim"), "Asaert"=>array("Loes","Sam"));

In de output geeft dat zoiets als:
echo "Het jongste kind van de familie Janssens heet ". $kinderen['Janssens'] [2];

4.2. Arrayfuncties

Enkele veelgebruikte arrayfuncties:

array("w1", "w2", ..., "wn")maak een reeksvariabele met n waarden
array_reverse($reeks) geeft de waarden van $reeks in omgekeerde volgorde
array_search(waarde, $reeks, false)zoekt waarde in array $reeks; met true is "5" verschillend van 5
array_unique($reeks) geeft $reeks zonder duplicaten terug
count($reeks) telt het aantal elementen in $reeks
sort($reeks, [volgorde]) sorteert $reeks, eventueel volgens SORT_NUMERIC of SORT_STRING
shuffle($reeks)schudt $reeks, verplaatst de elementen onderling
array_keys($reeks)geeft een array met alle keys uit $reeks
array_values($reeks)geeft een array met alle waarden uit $reeks

4.3. Oefeningen

Oefening 1: bekijk de servervariabelen.
Zet het scriptje hieronder in een HTML-pagina, die je opslaat als PHP:
<h1>Systeemvariabelen van de server</h1>
<table>
<?php
  foreach($_SERVER as $sleutel => $waarde) {
    echo "<tr><td>" . $sleutel . "</td><td>" . $waarde . "</td></tr>";
  }
?>
</table>

Oefening 2: associatieve arrays

  1. Maak rij $a met de volgende key/value paren: reeksA
    Bekijk het resultaat met behulp van de functie var_dump
  2. Maak de rij $b met de volgende key/value paren: reeksA
    Bekijk het resultaat met behulp van de functie print_r.
  3. Voeg aan $a twee elementen toe: "correct" => true en "verkeerd" => false en bekijk weer het resultaat.
  4. Voeg aan $b elementen 10 en 11 toe. Toon het resultaat met een foreach.

Oefening 3: maak een kalender voor de huidige maand kalender