Welcome Guest, Not a member yet? Register   Sign In
[solved] array modication during a foreach loop
#1

[eluser]kevinprince[/eluser]
I have been trying this afternoon to add a value to an array during a foreach loop, however it just doesnt seem to work.

I investigated on php.net and foreach does not touch the original array just loads a copy into memory. There is then the usual mess of php.net explanations which I cant get my head around on how to solve it.

My code is below, so if you have any ideas on how to solve it let me know its mighty annoying.

Code:
///Get List of Events
$eventlist = $this->EventModel->get_parent_events();

///Loop through events retrieved
foreach($eventlist as $item):

$eventid = $item['eventid'];
///Get the number of attendees from MYSQL
$event_attendance = $this->EventModel->count_parent_attendence($eventid);
///Append the open array with the count
$item['count'] = $event_attendance['count'];                    

endforeach;

print_r($eventlist);
#2

[eluser]xwero[/eluser]
try this

Code:
///Get List of Events
$eventlist = $this->EventModel->get_parent_events();

///Loop through events retrieved
$i = 0;
foreach($eventlist as $item):

$eventid = $item['eventid'];
///Get the number of attendees from MYSQL
$event_attendance = $this->EventModel->count_parent_attendence($eventid);
///Append the open array with the count
$eventlist[$i]['count'] = $event_attendance['count'];  
++$i;                  

endforeach;

print_r($eventlist);
#3

[eluser]kevinprince[/eluser]
Thanking you!

Why cant people just explain these things simply, all the php.net examples were done using while and list.

Marked as solved.
#4

[eluser]mironcho[/eluser]
As of php5 you can use foreach value as reference:
Code:
foreach($eventlist as &$item):
but you have to unset $item manually after loop finishes.
Better way to do this is by using index as xwero has shown or by using foreach key functionality:
Code:
foreach($eventlist as $key => $item):
so you can use $key as index to adjust the $eventlist array ($eventlist[$key])




Theme © iAndrew 2016 - Forum software by © MyBB