PHP:未定义的偏移量错误

The below-provided code is used to fill an array "data".

$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;

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. The error is produced by line $bar = new GanttBar(..). I tried to substitute $row['column3'] by some string "xxx", but there was the same error.

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);
    }

Isn't

$data[] = array("xxx",' EE112',$row['column3'],'FT445',"2004-03-01 10:00","2004-03-01 14:00");

just enough, data structure should be as simple as possible.

Ok, if you want that structure.

$data[] = array(array("xxx",' EE112',$row['column3'],'FT445'),"2004-03-01 10:00","2004-03-01 14:00");

Then

foreach($data as $i => $var) {
    $bar = new GanttBar($i, $var[0], $var[1], $var[2]);
    $graph->Add($bar);
}

I think there is a very basic problem:

The foreach loop is creating a new subarray in $data for every row. But later on your code is trying to get three rows from each entry in $data - which never has been created. Therefore $data[$i][1] is always empty.

You might need to adjust your sql query to receive the data in the correct format from the beginning.