Array losing field after exiting the foreach

2

I have an array of object I want to add a field in each item I make a foreach for this, but the field some after exiting the loop

foreach ($this->questions as $question) {
           var_dump($question); // aqui é apresentado o array no estado comum
           $question['survey_id'] = $survey_id;
           var_dump($question); // após a adesão de um novo campo o array se modifica mostrando o campo adicionado
}
// mas aqui ele volta para seu estado natural
var_dump($this->questions);

Why is this happening?

    
asked by anonymous 24.03.2017 / 14:32

2 answers

3

First, the $ question variable is only temporary and has no connection with the $ questions variable. You could try to pass it as reference, I believe that in this case you can do what you want.

foreach ($this->questions as &$question) {

       $question['survey_id'] = $survey_id;

}

var_dump($this->questions);

See if this way up to your needs.

    
24.03.2017 / 14:44
0

try this:


foreach ($this->questions as $question) {
           var_dump($question); // aqui é apresentado o array no estado comum
           $this->questions['survey_id'] = $survey_id;
           var_dump($question); // após a adesão de um novo campo o array se modifica mostrando o campo adicionado
}
// mas aqui ele volta para seu estado natural
var_dump($this->questions);


ou


foreach ($this->questions as $question) {
           var_dump($question); // aqui é apresentado o array no estado comum
           $this->questions['survey_id'] = $survey_id;
           var_dump($question); // após a adesão de um novo campo o array se modifica mostrando o campo adicionado
}
// mas aqui ele volta para seu estado natural
var_dump($question);

    
24.03.2017 / 14:40