Uitleg arrays

Lees dit eerst goed door voordat je de opdrachten maakt.

Waarom arrays?

Tot nu toe heb je gewerkt met losse variabelen, zoals:

$kleur1 = "blauw";
$kleur2 = "geel";

Maar stel dat je meerdere waarden hebt die bij elkaar horen, zoals de kleuren van een spel. Dan wordt dit al snel onoverzichtelijk.

Daarom gebruiken we een array: één variabele waarin je meerdere waarden bewaart.


Een eerste array

Een array maak je met vierkante haken [].

$kleuren = ["blauw", "geel", "groen", "rood"];

Wat hier gebeurt:

  • Je maakt één variabele: $kleuren
  • Daarin zitten meerdere waarden
  • PHP geeft elke waarde automatisch een nummer (index)

Dat ziet er zo uit:

index waarde
0 blauw
1 geel
2 groen
3 rood

Waarden uit een array halen

Je kunt een waarde uit een array halen met het nummer:

echo $kleuren[0];

Belangrijk:

  • De eerste waarde heeft index 0
  • Niet 1!

Meerdere waarden tonen

Als je alle kleuren wilt tonen, moet je ze stuk voor stuk ophalen.

Je kunt dus meerdere echo-regels gebruiken.

Denk daarbij aan:

  • Hoe zorg je dat elke kleur op een nieuwe regel komt?
  • Welke HTML-tag heb je daarvoor eerder gebruikt?

Van lijst naar betekenis: keys en values

Soms wil je niet werken met nummers zoals 0, 1, 2, maar met duidelijke namen.

Bijvoorbeeld: een kleur hoort bij een startpositie.

Dan gebruik je een associatieve array.

$start = [
    'blauw' => 0,
    'geel' => 10,
    'groen' => 20,
    'rood' => 30,
];

Hier gebeurt iets anders:

  • Links staat de key (naam)
  • Rechts staat de value (waarde)

Dus:

  • 'blauw' hoort bij 0
  • 'geel' hoort bij 10

Je gebruikt nu geen nummers meer, maar namen.


Waarden ophalen met keys

In plaats van een nummer gebruik je nu de key:

echo $start['groen'];

Denk even na:

  • Welke waarde krijg je hier terug?

Arrays combineren (multi-dimensionaal)

In een spel heb je vaak meerdere soorten informatie. Bijvoorbeeld:

  • startposities
  • gezette stappen

Die wil je bij elkaar houden.

Dat kan met een array in een array.

$spel = [
    'start' => [...],
    'stappen' => [...]
];

Je maakt dus een soort “map” van gegevens.

Belangrijk om te begrijpen:

  • $spel bevat geen losse waarden
  • maar weer andere arrays

Arrays bekijken tijdens het programmeren

Als je wilt zien wat er in een array zit, gebruik je:

print_r($array);

Vaak samen met:

echo "<pre>";
print_r($array);
echo "</pre>";

Waarom?

  • Dan wordt de structuur netjes zichtbaar
  • Dat helpt bij het debuggen

Alleen keys of alleen values

Soms wil je niet de hele array, maar alleen:

  • de namen (keys)
  • of de waarden (values)

PHP heeft daar handige functies voor.

Keys ophalen

array_keys($start)

Vraag jezelf af:

  • Wat verwacht je dat deze functie teruggeeft?

Values ophalen

array_values($start)

Denk:

  • Wat is hier het verschil met de vorige functie?

Werken met array-functies

PHP heeft veel handige functies voor arrays. Voor deze opdrachten zijn er drie belangrijk.


1. Aantal elementen tellen

count($start)

Gebruik dit als je wilt weten:

  • hoeveel onderdelen er in je array zitten

2. Bestaat een key?

array_key_exists('geel', $start)

Deze functie controleert:

  • staat deze naam in de array?

Let op:

  • het gaat hier om de key, niet de value

3. Bestaat een value?

in_array(20, $start)

Deze functie controleert:

  • komt deze waarde ergens voor?

Belangrijk verschil (vaak fout)

Leerlingen halen deze twee vaak door elkaar:

Functie Waar kijkt hij naar?
array_key_exists() links (de namen)
in_array() rechts (de waarden)

Denkstappen die je helpen

Bij elke opdracht kun je jezelf deze vragen stellen:

Bij arrays maken

  • Is dit een lijst? → gewone array
  • Heeft elk item een naam? → associatieve array
  • Heb ik groepen nodig? → array in array

Bij tonen van gegevens

  • Heb ik één waarde nodig of meerdere?
  • Moet het onder elkaar komen?
  • Gebruik ik echo of print_r()?

Bij functies

  • Wil ik tellen? → count()
  • Zoek ik een naam? → array_key_exists()
  • Zoek ik een waarde? → in_array()

Er zijn nog veel meer array functies, zie daarvoor php.net.

Laatste tip

Als iets niet werkt:

  1. Gebruik print_r() om te kijken wat er in je array zit
  2. Controleer of je:

    • quotes goed gebruikt
    • => niet vergeet
    • de juiste functie gebruikt

Uitleg sessies Foreach bij arrays