Skip to main content

8 Associative Arrays

Arrays zijn er in meerdere soorten. In deze les gaan we het hebben over associatieve arrays.

We hebben het al uitgebreid gehad over 'gewone' of 'eenvoudige' arrays in PHP. Deze 'gewone' arrays heten ook wel een indexed array omdat je de elementen van via de index (0,1,2,3,4,5.....) kunt opzoeken.

Er bestaat nog een type array: het assiociative array (in Python heet dit een 'Dictionary'). Het wordt ook wel een key-value array genoemd. Het assiociative array lijkt veel op JSON. JSON is een bestandsformaat waarin je data kan opslaan. Je zou het een soort database kunnen noemen.

  Andere namen Hoe benader je een element? Voorbeeld
Indexed Array gewoon array, 1 dimensionaal array, eenvoudig array via de index, die is altijd 0,1,2,3,4.... $myArray[13]
Assiociative Array key-value array, Dictionary (Python) via de key, die moet uniek zijn en moet je zelf een waarde geven. $myArray['james'];

In het onderstaande filmpje wordt eerst nog een keer herhaald hoe een 'gewoon' array ook al weer werkt en vanaf 3'00'' in het filmpje wordt uitgelegd hoe een associative array in PHP werkt.

In dit filmpje wordt een met een ander voorbeeld hetzelfde uitgelegd in het Engels.

Indexed Array

Bij een indexed array heb je als index, een nummer. Elk array element heeft een nummer, te beginnen met 0.

$age[0] = "35";
$age[1] = "37";
$age[2] = "43"; 

Je kunt dit array ook op een ander manier maken, weet je nog?

$age = array(35,37,43);

Het bovenstaande array heeft drie elementen: $age[0], $age[1] en age{2]. het getal tussen de vierkante haken heet de index.

Associative Array

Stel dat je het array dat hierboven staat wilt gebruiken om de leeftijd van personen vast te leggen. $age[0] is de leeftijd van Peter, $age[1] is de leeftijd van Ben en $age[2] is de leeftijd van Joe.

$age[0] = "35";
$age[1] = "37";
$age[2] = "43"; 

Dit is wel wat onhandig want je moet nu onthouden dat de 0 bij Peter hoort, de 1 bij Ben en de 2 bij Joe. Dat kan anders!

Associative Array aanmaken

Met een assiociative array kun je de index vervangen door een key. En de key kan uit een string bestaan.

Bijvoorbeeld:

$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43"; 

Je kunt het array ook op een andere manier maken

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
Associative Uitlezen
echo $age['Ben'];

In plaats van de index bij een indexed array, gebruik je nu de key die je zelf hebt gemaakt voor het array.

Associative Veranderen
$age['Ben']=38;

Dit gaat ook hetzlfde als bij een eenvoudig één dimensionaal array. En ook hier gebruik je de key value die jezelf hebt gemaakt voor het array.

Associative Uitbreiden
$age['Mirna']=28;

Je kunt een assiociative array eenvoudig uitbreiden door een nieuwe key te gebruiken. Je moet wel zeker weten dat de key nieuw is anders overschrijf je de oude waarde. Als in het voorbeeld $age['Mirna'] al bestond dan heb je de oude waarde nu overschreven met de nieuwe waarde. Een key kan dus maar een keer voorkomen.

Opgave 1, theorievragen

a) EenWaaruit bestaat een index bij een index array, uit een string of een getal?

b) Waaruit bestaat een key bij een assiociative array, uit een string of uit een getal?

c)Stel een indexed array bestaat uit drie elementen. Wat zijn de indexen die dan worden gebruikt in dit array?

b)d) Kan eendezelfde indexkey inbij een indexedassiociative array meer dan een keer voorkomen?

Opgave 12

Op deze pagina staan van alle maanden van het jaar de normale gemiddelde temperatuur in Nederland vermeld. Zo kun je zien dat januari de koudste maand is met gemiddeld 3.1 graden en de warmste maand is juli met 17.9 graden.

a) Maar een assiociative array waarin van alle maanden van het jaar de normale gemiddelde temperatuur staan. Je hoeft alleen het array te maken. 

b) Gebruik het assiociative array dat je hebt gemaakt en druk de temperatuur af van de maand april.

Opgave 23

Begin met de volgende code

<?php
$places = array(
	"Japan" => "Tokyo",
    "Mexico" => "Mexico City",
    "USA" => "New York City",
    "India" => "Mumbai",
    "Korea" => "Seoul",
    "China" => "Shanghai",
    "Nigeria" => "Lagos",
    "Argentina" => "Buenos Aires",
    "Egypt" => "Cairo",
    "UK" => "London");
?>
  • Maak code die het volgende afdrukt:
    de hoofdstad van China is Shanghai
    Hierbij moet de naam Shanghai worden opgezocht uit het array. Je code mag de naam Shanghai dus niet bevatten.

  • Bestudeer: https://www.w3schools.com/php/php_arrays_associative.asp en zoek uit hoe je een associative array kunt uitprinten met een loop. Maak dan code die met het array  van hierboven het volgende uitprint. Gebruik daarvoor een loop.
De hoofdstad van Japan is Tokyo
De hoofdstad van Mexico is Mexico City
De hoofdstad van USA is New York City
De hoofdstad van India is Mumbai
De hoofdstad van Korea is Seoul
De hoofdstad van China is Shanghai
De hoofdstad van Nigeria is Lagos
De hoofdstad van Argentina is Buenos Aires
De hoofdstad van Egypt is Cairo
De hoofdstad van UK is London

Opgave 3

Gebruik het array dat je hebt gemaakt bij opgave 1a2a en druk de temperatuur van alle maanden af. Gebruik hiervoor een loop en zorg ervoor dat de output er als volgt uit ziet.

De normale gemiddelde temperatuur van januari in Nederland is 3.1 graden.
De normale gemiddelde temperatuur van februari in Nederland is 3.3 graden.
De normale gemiddelde temperatuur van maart in Nederland is 6.2 graden.
De normale gemiddelde temperatuur van april in Nederland is 9.2 graden.
De normale gemiddelde temperatuur van mei in Nederland is 13.1 graden.
De normale gemiddelde temperatuur van juni in Nederland is 15.6 graden.
De normale gemiddelde temperatuur van juli in Nederland is 17.9 graden.
De normale gemiddelde temperatuur van augustus in Nederland is 17.5 graden.
De normale gemiddelde temperatuur van september in Nederland is 14.5 graden.
De normale gemiddelde temperatuur van oktober in Nederland is 10.7 graden.
De normale gemiddelde temperatuur van november in Nederland is 6.7 graden.
De normale gemiddelde temperatuur van december in Nederland is 3.17graden.

--