home

Array_merge()

syntax $NewArray = array_merge($Array1, $Array2);

met array_merge kun je twee bestaande arrays samenvoegen tot 1 nieuw array. Dit kan bijvoorbeeld handig zijn als er data uit meerdere database tabellen verwerkt worden.

Array_merge() voorbeeld

Enkele voorbeelden,..

<?php

$NamenArray = array('Jan', 'Piet');
$NogMeerNamenArray = array('Klaas','Eppo');

$AlleNamenArray = array_merge($NamenArray, $NogMeerNamenArray);

//$AlleNamenArray bevat nu 'Jan','Piet','Klaas','Eppo'
?>

Array_merge(), maar de key dan ?

uit bovenstaande kan men begrijpen dat het mergen cq. samevoegen
van meerdere arrays eigenlijk best eenvoudig is, derhalve blijft er toch een vraag over welke enige uitleg behoeft namelijk, wat gebeurt er met de sleutelwaarde cq. key van de betreffende arrays ?..

Stel het volgende voorbeeld:

<?php
$Arrayone = array('Kees', 'Piet', 'Klaas');
/*
output
0 => Kees
1 => Piet
2 => Klaas
*/

$Arraytwo = array('Henk', 'Evert');
/*
output
0 => Henk
1 => Evert
*/

$Arraynew = array_merge($Arrayone, $Arraytwo);

/*
0 => Kees
1 => Piet
2 => Klaas
3 => Henk
4 => Evert

*/
?>

de key values opgeteld met array_merge()

Zoals in het bovenstaande voorbeeld duidelijk is geworden worden de key waardes opnieuw toegekend, ze lopen cumulatief op vanaf 0 zoals te verwachten is natuurlijk, hierbij moet men dus rekening houden met het feit dat de key values niet dezelfde blijven als in het oorspronkelijke
array.

Op zich niet al te schokkend zou men denken maar wat nu als er met key values gewerkt wordt die expliciet toegewezen zijn ?, zoals in onderstaand voorbeeld

<?php

$Arrayone = array('lid' => 'Kees','bestuurder' => 'Piet',
'vrijwilliger' => 'Klaas');

$Arraytwo = array('lid' => 'Henk','bestuurder' => 'Evert');

$Arraynew = array_merge($Arrayone, $Arraytwo);

var_dump($Arraynew);
/*
uitkomst in browser,..
array(3) { ["lid"]=> string(4) "Henk" ["bestuurder"]=> string(5) "Evert" ["vrijwilliger"]=> string(5) "Klaas" }
*/
?>

array_merge() overschrijft bestaande keys !

Inderdaad zoals in bovenstaand voorbeeld te zien is wordt bij arrays met expliciete keys de oude waarde van een expliciet toegewezen key waarde vervangen door de nieuwe waarde. Kortom als er met array_merge gewerkt wordt bedenk dan wel dat de key waarde cq. sleutelwaardes van de bestaande arrays niet ongewjzigd blijven, en dat bij toegewezen waardes dezelfde sleutelwaardes kunnen leiden tot onverwachte uitkomsten daar de nieuwste waarde wordt vervangen door de oudere waarde met dezelfde keywaarde