PHP:未定义的偏移量错误

时间:2012-05-17 09:17:41

标签: php sql arrays

以下提供的代码用于填充数组“数据”。

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

2 个答案:

答案 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查询以从头开始接收正确格式的数据。