fputcsv - только один столбец

Я хочу сохранить части (и по-другому расположены) моей базы данных 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 (например $list["A 1"] или же $list["A 15"]) имеет свою колонку. А потом зов fputcsv следует создать новую строку и снова один столбец для каждого $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]

3 ответа

Решение

Это это:

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

РЕДАКТИРОВАТЬ:

Используйте это для мгновенной работы с Excel:

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

РЕДАКТИРОВАТЬ 2: Символ по умолчанию, который используется в качестве разделителя полей в Excel, задается настройками локали окон. Это означает: если вы экспортируете csv-файл с немецкими настройками локали, это вызовет проблемы с Excel в среде us... В другой теме обсуждалась эта тема.

Попробуй это

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

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

Вы должны сделать матрицу:

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

Смотрите пример 1 из http://php.net/manual/en/function.fputcsv.php

Другие вопросы по тегам