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), hash table via de key, diedit moet uniekeen unieke string zijn en moetwaarvan je zelf eende waarde geven.bepaald. $myArray['james'];

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

In dit filmpje wordt eenaan metde hand van een ander voorbeeld hetzelfde uitgelegd in het Engels.

Indexed Array

Bij een indexed array heb je als index,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]. hetHet 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 kanbestaat uit een string bestaan.string.

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.gemaakt.

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

Dit gaat ook hetzlfdehetzelfde als bij een eenvoudig één dimensionaalindexed array. En ook hierHier 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één keer voorkomen.

Opgave 1, theorievragen

a) In het (Nederlandse) filmpje over associative arrays staat 'ma' => 8 waar staat de 'ma' voor en waar staat de 8 voor?

b) Waaruit bestaat een index bij een index array,array; uit een string of een getal?

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

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

e) Kan dezelfde key bij een assiociative array meer dan eenéén keer voorkomen?

f) Kan de key bij een assiociative array bestaat uit een getal?getal zijn?

Opgave 2

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 (januari, februari, etc.) 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 3

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 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 2a 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.

--