Versio

foreach array key toevoegen

Overzicht Reageren

Thijs X

Thijs X

29/12/2007 02:22:00
Quote Anchor link
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?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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';
}

?>
 
PHP hulp

PHP hulp

24/05/2012 16:42:12
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
- SanThe -

- SanThe -

29/12/2007 08:06:00
Quote Anchor link
$data[] wordt een nieuw array()
$this->aData[$i][] wordt en tweedimensionaal array()
 
Joren de Wit
Beheerder

Joren de Wit

29/12/2007 10:38:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$data
[] = 'test';
$data[] = '3';
?>

Je zou het natuurlijk zo aan kunnen pakken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($this->aData as $sKey => $sData)
{

    $aData[$sKey] = $sData;
}

?>
 
Thijs X

Thijs X

29/12/2007 13:33:00
Quote Anchor link
Bedankt SanThe & Blanche,

Heb het alsvolgt opgelost:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
        foreach($this->aData as $sKey => $sData)
        {

            $this->aData[$sKey][] = 'test';
        }

?>
 
Joren de Wit
Beheerder

Joren de Wit

29/12/2007 13:35:00
Quote Anchor link
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.
 



Overzicht Reageren