以下提供的代码用于填充数组“数据”。
$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;
当我尝试从数组中读取数据时,会出现错误“Undefined offset:1”。有趣的是,当我使用$data =
而非$data[] =
填充“数据”数组时,没有错误,只填充了最后一行。错误由行$bar = new GanttBar(..)
生成。我试图将$row['column3']
替换为字符串“xxx”,但也有同样的错误。
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);
}
答案 0 :(得分:3)
不是
$data[] = array("xxx",' EE112',$row['column3'],'FT445',"2004-03-01 10:00","2004-03-01 14:00");
就足够了,数据结构应该尽可能简单。
好的,如果你想要那个结构。
$data[] = array(array("xxx",' EE112',$row['column3'],'FT445'),"2004-03-01 10:00","2004-03-01 14:00");
然后
foreach($data as $i => $var) {
$bar = new GanttBar($i, $var[0], $var[1], $var[2]);
$graph->Add($bar);
}
答案 1 :(得分:1)
我认为有一个非常基本的问题:
foreach循环在每行的$ data中创建一个新的子数组。但是后来您的代码试图从$ data中的每个条目中获取三行 - 这些行从未创建过。因此$data[$i][1]
始终为空。
您可能需要调整sql查询以从头开始接收正确格式的数据。