2015-10-20 57 views
2

爲什麼我在最後得到空白數組?爲什麼我在最後得到空白數組?

我的PHP代碼:

$name = $_FILES["csv"]["tmp_name"]; 
$file = fopen($name,"r"); 

while(!feof($file)){ 

    $row = fgetcsv($file); 

    $data = array(
     "1"  =>$row[0], 
     "2"  =>$row[1], 
     "3"  =>$row[2], 
     "4"  =>$row[3] 
    ); 

    echo "<pre>"; 
    print_r($data); 
} 
fclose($file); 

我的結果:

 
Array 
(
    [1] => a 
    [2] => b 
    [3] => c 
    [4] => d 
) 

Array 
(
    [1] => e 
    [2] => f 
    [3] => g 
    [4] => h 
) 

Array 
(
    [1] => 
    [2] => 
    [3] => 
    [4] => 
) 

+2

您的文件可能包含空白行。 –

+0

不,沒有空行 –

+0

** php.net手冊說**:CSV文件中的空白行將作爲包含單個** null **字段的數組返回,並且不會被視爲錯誤。所以你可以通過在你的數組中添加$ row之前放置空條件來避免這個問題。 –

回答

0

試試下面code.If仍然返回末空數組,這意味着可能CSV文件在最後一行的單元格之一中有空格。

$name = $_FILES["csv"]["tmp_name"]; 

$file = fopen($name,"r"); 

while (($data = fgetcsv($file , 1000, ",")) !== FALSE) { 

     echo "<pre>"; 

     print_r($data); 

     echo "</pre>"; 

} 

fclose($file); 
+0

實際上,我想分配CSV數據到新的數組,並推入到MySQL ..上面我的代碼工作正常,只有問題是空白數組。 –

+0

由於您確定您的csv文件不包含空白行,您爲什麼不能嘗試使用這段代碼。如果仍然是空白數組,那麼我確定存在空白行。 –

+0

謝謝,它運作良好。我將它重新分配給新數組並推送到數據庫。再次感謝。 –

0

你可以簡單地用「array_filter」功能來刪除空白陣列,請找到鏈接與完整的代碼需要:https://eval.in/640133

你只需要映射和過濾結果陣列以去除空數組。

謝謝