4

私のmysqlデータベースの一部(および異なる配置)をCSVファイルに保存したいと考えています。そのために、次のコードを書きました。

$headerDisplayed = false;
foreach ($arr as &$currName)
{
    $result2 = mysql_query("SELECT * FROM Experiment Where Person='$currName'"); 
    $i = 1;
    while ($row2 = mysql_fetch_array($result2)) 
    {
        $list['Name'] = $currName;
        $list['Studie'] = $row2['Studie']; 
        if(strcmp($row2['Antwort'],$row2['Korrekt']) == 0)
        {
            $list["A $i"] = '0';
        }
        else
        {
            $list["A $i"] = '1';
        }

        $i++;
    }

    if ( !$headerDisplayed ) {
        // Use the keys from $data as the titles
        fputcsv($fp, array_keys($list));
        $headerDisplayed = true;
    }

    fputcsv($fp, $list);
}

fclose($fp);

残念ながら、これは私がやりたかったことではありません。$list私の計画では、 (eg$list["A 1"]または)の各エントリには$list["A 15"]独自の列があります。そして、 の呼び出しは新しい行を作成し、エントリfputcsvごとに 1 つの列を作成する必要があります。予想どおり、各呼び出しで$list新しい行を作成しますが、完全な配列は最初 (最も左) の列にあります。fputcsv$list

この問題を解決するにはどうすればよいですか?

追加: 次のようなメッセージが表示されます:

[1,0,0,0,1,1,0,0] [] [] [] [] [] [] []

[1,0,1,1,0,1,0,0] [] [] [] [] [] [] []

[0,1,1,1,1,1,0,1] [] [] [] [] [] [] []

しかし、私が欲しいのはもっと似ています:

[1] [0] [0] [0] [1] [1] [0] [0]

[1] [0] [1] [1] [0] [1] [0] [0]

[0] [1] [1] [1] [1] [1] [0] [1]
4

3 に答える 3

10

これこれ:

fputcsv($fp, array_values($list));

編集:

これを使用して、Excel ですぐに作業できるようにします。

fputcsv($fp, array_values($list), ';', ' ');

編集 2: Excel でフィールド区切り文字として使用される既定の文字は、Windows のロケール設定によって設定されます。つまり、ドイツ語のロケール設定で csv ファイルをエクスポートすると、米国環境の Excel で問題が発生します... 別のスレッドでこのトピックが取り上げられました。

于 2012-07-18T12:20:26.837 に答える
1

これを試して

fputs($fp, implode(array_keys($list), ',')."\n");

fputs($fp, implode(array_values($list), ',')."\n");
于 2012-07-18T12:32:21.117 に答える
0

マトリックスを実行する必要があります:

        {
            $list["A"]["$i"] = '0';
        }
        else
        {
            $list["A"]["$i"] = '1';
        }

http://php.net/manual/en/function.fputcsv.phpの例 1 を参照してください。

于 2012-07-18T12:11:22.107 に答える