0

私はPHPの初心者です。配列「data」を作成するために、以下のコードを記述しました。10行あるはずですが、何らかの理由で最後(10番目)の行だけが埋められます。SQLクエリはMySQLクエリマネージャでチェックしたので、確かに問題ありません(クエリは10行を返します)。

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

更新1:最初の質問に関連する別の質問があります。配列からデータを読み取ろうとすると、「未定義のオフセット:1」というエラーが発生します。面白いことに、「データ」配列を使用して$data =ではなくを使用して入力した場合$data[] =、エラーは発生せず、最後の行だけが入力されました。

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

3 に答える 3

2

これは、反復ごとに$data変数全体をオーバーライドしているためです。使用する

$data[] = array(...

foreach最新のエラーについて-配列を反復するために使用する必要があります。それがそのために作られたものです。

于 2012-05-17T08:22:53.063 に答える
2

配列に追加するには、このようにする必要があります。

$data[] = array($i,array("xxx",' EE112',$row['column3'],'FT445'),"2004-03-01 10:00","2004-03-01 14:00");
于 2012-05-17T08:24:11.833 に答える
1
$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

$data上記の1行目では、以前のすべてのデータを上書きして保存された新しい配列が作成されます。2行目では、新しい配列は既存の配列内に格納されます$data

于 2012-05-17T08:28:08.363 に答える