I'm newbie in PHP. I wrote the below-given code to create the array "data". It should have 10 rows, BUT for some reason only last (10th) row is filled. The SQL query is fine for sure, because I checked it in MySQL Query Manager (the query returns 10 rows).
$query1="SELECT * FROM tab1, tab2 WHERE tab1.column1=tab2.column2;";
$result1=DatabaseConnector::ExecuteQueryArray($query1);
$data = array();
$i = 0;
foreach ($result1 as $row):
$data = array(
array($i,array("xxx",' EE112',$row['column3'],'FT445'),"2004-03-01 10:00","2004-03-01 14:00"));
$i++;
endforeach;
Update 1: I have another related to my initial question. When I try reading data from the array, the error "Undefined offset: 1" occurs. The funny thing is that when I filled "data" array using $data =
and not $data[] =
, there was no error, just the last row was filled.
for($i=0; $i<count($data); ++$i) {
$bar = new GanttBar($data[$i][0],$data[$i][1],$data[$i][2],$data[$i][3]);
$graph->Add($bar);
}
That's because you're overriding the entire $data variable on each iteration. Use
$data[] = array(...
As for the newest error - You should be using foreach
to iterate an array. That's what it was made for.
Should like this to append to an array.
$data[] = array($i,array("xxx",' EE112',$row['column3'],'FT445'),"2004-03-01 10:00","2004-03-01 14:00");
$data = array(...); // Typecasts $data to a new array with given keys and values
$data[] = array(...); // Typecasts a new array to the next array pointer in $data
Above, line 1 would create a brand new array stored in $data
overwriting all previous data. On line 2 the new array would be stored within the already existent array $data
.