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 bij0'geel'hoort bij10
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:
$spelbevat 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
echoofprint_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:
- Gebruik
print_r()om te kijken wat er in je array zit -
Controleer of je:
- quotes goed gebruikt
=>niet vergeet- de juiste functie gebruikt