Werken met array's

Een array is een datatype, zoals integer of string. Je gebruikt het om meerdere waarden op te slaan in 1 variabele. Als voorbeeld kan ik de lengte van een kind weergeven:
Normaal: $lengte = 136; de variabele heeft één waarde.
Een array: $lengte[5] = 97; de lengte op de 5de verjaardag is 97;

Zet in PHP de volgende code:

$lengte[5] = 55;
$lengte[] = 66;

Je ziet bij de eerste $lengte rechte haken met een getal, dat getal stelt de positie voor van de waarde 55.

Je kunt je dat voorstellen als een rij (array betekent rij) getallen met een index en een waarde. Bij de index 5 hoort de waarde 55

Je zag echter bij de tweede $lengte rechte haken zonder een getal! PHP weet wat de laats gebruikte positie was in de rij getallen en voegt de waarde 66 toe aan het eind van de rij. Die krijgt daarmee positie (index) 6.

Als je een waarde wilt toevoegen op een bepaalde positie gebruik je dus gewoon de gewenste index. Let op!De telling begint met index 0.

Zet in PHP de volgende code:

$lengte[2] = 22;
echo "De lengte na 2 jaar was $lengte[2]";

Je kunt zelf bedenken wat de echo doet.

Alle waarde uit een array tonen

for ($i=0;$i<=6;$i++) {
        echo "<p>Na $i jaren is de lengte $lengte[$i]</p>";
}

Na 0 jaren is de lengte

Na 1 jaren is de lengte

Na 2 jaren is de lengte 22

Na 3 jaren is de lengte

Na 4 jaren is de lengte

Na 5 jaren is de lengte 55

Na 6 jaren is de lengte 66

Er zit een groot nadeel aan deze wijze (met for) van het tonen van alle getallen uit een array.
Je moet precies weten tot welke waarde je moet weergeven, in de for-lus hierboven stond $i<=6.
Als de array meer waarden voor lengtes heeft, dan worden die niet weergegeven. Verderop zie je een eenvoudige manier om alle waarden, hoeveel het er ook zijn, uit een array weer te geven.

Voorbeeld y=x2 - 9x + 18

Een variabele vullen met een for-lus

for ($i=0;$i<=10;$i++) {
        $rijtje[$i]=$i*$i-9*$i+18;
}

De variable $rijtje krijgt via de [ ] een index mee die vastlegd welke positie van de array (het rijtje) wordt vastgelegd.
In dit geval gebruiken we de variabele $i om die van 0 t/m 10 loopt. Dat levert een bekend tabelletje met waarden voor deze parabool (maar dat zag je al!).

index x 0 1 2 3 4 5 6 7 8 9 10
$rijtje y 18 10 4 0 -2 -2 0 4 10 18 28

Waarden uit array weergeven

De inhoud van een array kun je eenvoudig weergeven door ze één voor één met een echo weer te geven. Met een normale variabele doe je dat zo: echo $i;
Bij een array moet je alle indexen (x-waarden) langs en de inhoud (y-waarden) tonen. Dat gaat met een foreach.

foreach ( $rijtje AS $index => $inhoud ) {
      echo " de x waarde is $index en de y-waarde is $inhoud <br>";
}

met als resultaat:

de x waarde is 0 en de y-waarde is 18
de x waarde is 1 en de y-waarde is 10
de x waarde is 2 en de y-waarde is 4
de x waarde is 3 en de y-waarde is 0
de x waarde is 4 en de y-waarde is -2
de x waarde is 5 en de y-waarde is -2
de x waarde is 6 en de y-waarde is 0
de x waarde is 7 en de y-waarde is 4
de x waarde is 8 en de y-waarde is 10
de x waarde is 9 en de y-waarde is 18
de x waarde is 10 en de y-waarde is 28

Of nog eenvoudiger: de print_r functie

type in php print_r($rijtje);

Het resultaat is:

Array ( [0] => 18 [1] => 10 [2] => 4 [3] => 0 [4] => -2 [5] => -2 [6] => 0 [7] => 4 [8] => 10 [9] => 18 [10] => 28 )


Kenmerken van een array

Je kunt functie op array's uitvoeren die belangrijke kenmerken ervan weergeven zoals minimum, maximum en lengte. Enkele zie je hieronder:

$minrij = min($rijtje);
    echo $minrij; geeft de waarde -2

$maxrij = max($rijtje);
    echo $maxrij; geeft de waarde 28

$lengte = count($rijtje);
    echo $lengte; geeft de waarde 11 (tel maar na)


Array doorgeven met formulier

Je kunt array's niet met formulieren doorgeven, toch wil je soms de hele rij met waarden gebruiken. Je moet dan eerst de array omzetten naar een string, deze kan wel worden doorgegeven. Later zul je de string moeten terugzetten in een array.
Dat gaat met implode en explode functie.

$string = implode(",", $rijtje);
    echo $string; geeft het volgende resultaat: 18,10,4,0,-2,-2,0,4,10,18,28

Als de waarden van de array komma's bevat kan dat problemen opleveren, voor de zekerheid kun je dan beter een 'pipe' (|) als scheidingsteken gebruiken. Dan krijg je iets als: 18|10|4|0|-2|-2|0|4|10|18|28

Terugzetten van een string naar een array gaat zo:

$newarray = explode(",", $string);

Let hier goed op dat je hetzelfde sacheidingsteken gebruikt!