2015-08-25 45 views
0

我嘗試寫在這裏描述的以下功能的.csv文件:PHP - 將2d數組寫入CSV文件,但神祕地將「0,1,2,3,4,5,6,7,8,9」作爲第一行?

Export to CSV via PHP

這是函數:

function array2csv(array &$array) 
{ 
    if (count($array) == 0) { 
    return null; 
    } 
    ob_start(); 
    $df = fopen('/path/to/file.csv', 'w'); 

    fputcsv($df, array_keys(reset($array))); 
    foreach ($array as $row) { 
    fputcsv($df, $row); 
    } 
    fclose($df); 
    return ob_get_clean(); 
} 

我叫它像這樣:

array2csv($array); 

其中$array[0](所有其他值遵循此格式)如下:

array(10) { 
    [1]=> 
    string(19) "2015-03-01 00:09:01" 
    [2]=> 
    string(11) "1234567890" 
    [3]=> 
    string(2) "26" 
    [7]=> 
    string(7) "0.10102" 
    [8]=> 
    string(12) "TESTING THIS" 
    [9]=> 
} 

我一直在爭奪,而現在試圖找出爲什麼我得到輸出的.csv文件中,如下所示:

0,1,2,3,4,5,6,7,8,9 
"2015-03-01 00:09:01",1234567890,26,0.10102,"TESTING THIS" 
... etc ... 

還沒有看到任何其他的問題,這樣,在做研究我不明白爲什麼會發生這種情況。

任何人都可以啓發我這裏發生了什麼?謝謝!

回答

2

它把你的數組的數組鍵作爲標題的第一行:

fputcsv($df, array_keys(reset($array))); 

意味着你有一個二維數組與基於0的密鑰,例如

Array ( 
    0 => Array ("2015-03-01 00:09:01",1234567890,26,0.10102,"TESTING THIS") 
    1 => Array (...) 
    2 => Array (...) 
    3 => Array (...) 
    4 => Array (...) 
    5 => Array (...) 
    6 => Array (...) 
    7 => Array (...) 
    8 => Array (...) 
    9 => Array (...) 
)
+0

謝謝你。我真的沒有得到那裏發生的事情,但我現在看到,我應該已經注意到,那裏的值與數組中的值的數量相同,有時候當你被困在一個想法鏈上時,它是愚蠢的:) –

+0

@IndigoIdentity不客氣。 – Rizier123

2

你正在寫的鑰匙文件,在這裏

fputcsv($df, array_keys(reset($array))); 
+0

謝謝亞歷克斯,感謝答案,但我會把它給另一個,因爲他是第一個,因爲他已經擴大了這件事。 –