foreach array key toevoegen
Hallo allemaal,
Ben momenteel bezig met een aantal klasse te schrijven en toen stuitte ik op hetvolgende probleem.
Als ik een key wil toevoegen aan een 2D array dmv een foreach dan werkt het niet, ook niet met functies zoals array_push. Maar zodra ik het met een forloop doe werkt het wel:S
Iemand enig idee waarom het niet werk met de foreach?
Ben momenteel bezig met een aantal klasse te schrijven en toen stuitte ik op hetvolgende probleem.
Als ik een key wil toevoegen aan een 2D array dmv een foreach dan werkt het niet, ook niet met functies zoals array_push. Maar zodra ik het met een forloop doe werkt het wel:S
Iemand enig idee waarom het niet werk met de foreach?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Werkt niet
foreach( $this->aData as $data ) {
$data[] = 'test';
array_push($data, '3');
}
// Werkt wel
for($i=0; $i < count($this->aData); $i++) {
$this->aData[$i][] = 'test';
}
?>
// Werkt niet
foreach( $this->aData as $data ) {
$data[] = 'test';
array_push($data, '3');
}
// Werkt wel
for($i=0; $i < count($this->aData); $i++) {
$this->aData[$i][] = 'test';
}
?>
Gesponsorde koppelingen:
$data[] wordt een nieuw array()
$this->aData[$i][] wordt en tweedimensionaal array()
$this->aData[$i][] wordt en tweedimensionaal array()
Een klein verschil: $data[] zorgt ervoor dat er een nieuwe key in de array $data aangemaakt wordt. Alleen als $data niet bestaat, zal het ook een nieuwe array maken.
array_push() doet precies hetzelfde, dus eigenlijk staat er in die foreach loop dit:
Je zou het natuurlijk zo aan kunnen pakken:
array_push() doet precies hetzelfde, dus eigenlijk staat er in die foreach loop dit:
Je zou het natuurlijk zo aan kunnen pakken:
Bedankt SanThe & Blanche,
Heb het alsvolgt opgelost:
Heb het alsvolgt opgelost:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
foreach($this->aData as $sKey => $sData)
{
$this->aData[$sKey][] = 'test';
}
?>
foreach($this->aData as $sKey => $sData)
{
$this->aData[$sKey][] = 'test';
}
?>
Het is niet slim om in een foreach loop waarmee je een array uitleest, waarden in dezelfde array te gaan veranderen. Dat zou nog wel eens voor onverwachte resultaten kunnen zorgen.



