Huidig_Array
Array (
[1] => Array ( [WEEK] => 201724 [AANTAL] => 4004 [POTTEN] => 22 [TYPE] => 390 )
[2] => Array ( [WEEK] => 201724 [AANTAL] => 96690 [POTTEN] => 551[TYPE] => 390 )
[3] => Array ( [WEEK] => 201724 [AANTAL] => 780 [POTTEN] => 4 [TYPE] => 240 )
[4] => Array ( [WEEK] => 201724 [AANTAL] => 33720 [POTTEN] => 141 [TYPE] => 240 )
[5] => Array ( [WEEK] => 201724 [AANTAL] => 12250 [POTTEN] => 118 [TYPE] => 104 )
)

Nieuw_Array
Array (
[1] => Array ( [WEEK] => 201724 [AANTAL] => 100694 [POTTEN] => 573 [TYPE] => 390 )
[2] => Array ( [WEEK] => 201724 [AANTAL] => 34500 [POTTEN] => 145 [TYPE] => 240 )
[3] => Array ( [WEEK] => 201724 [AANTAL] => 12250 [POTTEN] => 118 [TYPE] => 104 )
)

Ik ben bezig met een PHP pagina. Ik krijg nu de output van Huidig_Array

Wat ik wil is dat het Nieuw_Array alleen regels bevat waarbij AANTAL en POTTEN is opgeteld als het TYPE gelijk is. Zie bovenstaande voorbeeld. Dat ik dus geen 5 regels terug krijg maar nog maar 3

Nu zou ik twee keer via een foreach het Huidig_Array kunnen uitlezen. Eerste keer om alle type te bepalen en dan de tweede keer de waardes op te tellen. Is niet de beste (zeker niet de netste) manier.

Hoe kan dit mooier/netter. Is het überhaupt mogelijk?
Je zou dit met 1 foreach kunnen oplossen, waarin je de 'type' als index gebruikt om te kijken of je de waardes moet toevoegen, of erbij op moet tellen.

$aNew = [];
foreach($aHuidig AS $aRow)
{
	if(isset($aNew[$aRow['type']]))
	{
		$aNew[$aRow['type']]['aantal'] += $aRow['aantal'];
		$aNew[$aRow['type']]['potten'] += $aRow['potten'];
	}
	else
		$aNew[$aRow['type']] = $aRow;
}
Na wat ombouwen van jouw code en wat eigen creativiteit is het gelukt. Bedankt Gerhard I

Reageren