2012-12-12 99 views
0

我有讀取CSV文件的麻煩。到目前爲止,我可以打開CSV並閱讀第一行。PHP僅打印CSV的第一行

我的CSV文件看起來像這樣(請注意每個新行):

SMITH 
PHIL 
CHARLIE 
SALLY 
ETC 

我在Excel中保存文件爲CSV,但被逮住每個換行符。

我當前的代碼如下所示:

<?php 
$file = fopen('surnames.csv', 'r'); 

$data = fgetcsv($file); 

echo "<pre>"; 
print_r($data); 
echo "</pre>"; 

fclose($file); 

?> 

電流輸出

Array 
(
    [0] => SMITH 
) 

任何幫助表示讚賞。我的預期輸出顯然是具有所有值的單個陣列。

謝謝。

回答

4

你必須遍歷每一行讀取整個文件,否則你只能讀取文件的第一行:

$data = array(); 
while(($line = fgetcsv($handle)) !== false) { 
    $data[] = $line; 
} 

現在$data將是一個多維數組從CSV每一行文件。

4

fgetcsv()一次只獲取一行。您的代碼應沿的線條更:

<?php 
$file = fopen('surnames.csv', 'r'); 

echo "<pre>"; 
while(($data = fgetcsv($file)) !== false) { 
    print_r($data); 
} 
echo "</pre>"; 

fclose($file); 
+0

你需要在'while'環進行嚴格比較,否則珍視類型強制轉換爲'FALSE'將打破循環,即使該文件可能不完全閱讀。此外,這不符合OP的要求:我的預期輸出顯然是**單個數組**,包含所有值。 – nickb

+0

@nickb真。文件中的空白行將導致返回NULL,這將鬆散地評估爲「false」。我錯過了最後一行,然後對你的答案有了滿意的答覆。 – Sammitch

+0

不是問題,只是想指出來。另外,爲了澄清,我不相信'NULL'會被返回,一個空字符串會回來,這也鬆散地評估爲'false'。 – nickb