嘗試使用filegetcsv
解析一個CSV文件,並做的東西有了它,使用下面的代碼中找到的所有在互聯網上,包括PHP function definition頁:filegetcsv造成無限循環
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
print_r($data);
}
fclose($handle);
}
但代碼給了我一個在$data =
行警告的無限循環:
PHP Warning: fgetcsv() expects parameter 1 to be resource, boolean given in...
- 我知道我打開的文件是一個有效的文件,因爲如果我添加無效字符的文件名,我收到了不同錯誤和沒有循環。
- 該文件位於具有完全權限的文件夾中。
- 我不使用的Excel在Mac上生成CSV(there's a quirky error there)
- PHP版本5.1.6,所以應該有與功能沒有問題
我知道該文件不是太大,或畸形的,因爲我一直在萎縮原始文件看,如果這是一個問題,最後只是在什麼記事本中創建一個自定義文件超過兩行,如:
Value1A,Value1B,Value1C,Value1D
仍然循環和不提供數據。下面是完整的代碼,我與現在的工作(使用一個變量,它比行數較大,所以我可以證明它會無限循環,而不實際給我的服務器的無限循環)
if ($handle = fopen($_SERVER['DOCUMENT_ROOT'].'/tmp/test-csv-file.csv', 'r') !== FALSE) {
while ((($data = fgetcsv($handle, 1000, ',')) !== FALSE) && ($row < 10)) {
print_r($data);
$row++;
}
fclose($handle);
}
所以,我真的有兩個問題。
1)我可能忽略了什麼導致了這個循環?我半信半疑地認爲這是真正的「面掌」的簡單...
2)爲什麼推薦的代碼爲這個函數的東西,如果文件存在但可能會導致無限循環,但有一些未知的問題?我會認爲!== FALSE
等等的目的是防止這種東西。
這就是你的代碼的精確複製/粘貼,你沒有手動重新輸入它? – Crontab
我複製並粘貼了一些評論,所以我只複製並粘貼了整個內容,並刪除了註釋,以防我的原始內容出現錯誤。 – joshuahedlund