Почему fgetcsv (), по-видимому, иногда рассматривает "конец файла" как ошибку? - PullRequest
0 голосов
/ 15 марта 2020

Из руководства на https://www.php.net/fgetcsv:

fgetcsv () возвращает NULL, если указан неверный дескриптор, или FALSE для других ошибок, включая конец файла.

Должен ли я интерпретировать это как означающее, что "конец файла" считается ошибкой ?!

Я использовал fgetcsv () для долгое время и никогда не сталкивался с тем, что он возвращает FALSE в последней строке, но недавно я обнаружил файл CSV, где это происходит. Очень странно, особенно учитывая тот факт, что я автоматически преобразую переводы строк в «стандартные» Unix до операций с fgetcsv ().

Не правильно ли я читаю / понимаю руководство или как?

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Нет. Вы неправильно поняли интерпретацию. fgetcsv() возвращает ноль, если файл CSV не был открыт fopen() перед загрузкой с помощью fgetcsv. FALSE возвращает для других ошибок и когда достигнут конец файла. Поэтому цикл «while» используется для чтения файла, подобного этому:

$file = fopen("myFile.csv", "a");

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

 /* now the $row variable is an array where line by line is stored from 
    $file. Here while-loop will read line by line from a file until it 
    reaches FALSE as the end of the file. 
 */
}
0 голосов
/ 15 марта 2020

Это просто означает, что при возникновении ошибки или достижении конца файла возвращается FALSE . Считать это последнее состояние «ошибкой» или нет, мне не важно.

...