Ошибка при попытке доступа к смещению массива для значения типа bool в PHP 7,4 - PullRequest
0 голосов
/ 17 июня 2020

У меня есть такой код:

// load the file
self::$_list = array();
$handle = fopen($file, 'r');
while (!feof($handle)) {
    $line = fgetcsv($handle);
    if (null != $line && count($line)!=2) continue;
    self::$_list[trim($line[0])] = trim($line[1]);
}
fclose($handle);

Но когда я тестирую, я получил такую ​​ошибку: Примечание: попытка доступа к смещению массива для значения типа bool в Ошибка относится к скрипту self::$_list[trim($line[0])] = trim($line[1]);.

Помогите, пожалуйста, спасибо.

1 Ответ

1 голос
/ 17 июня 2020

как вы можете прочитать здесь в разделе Return:

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

Таким образом, проблема заключается в $line[0], когда вы дойдете до конца файла, потому что $line это false.

Пожалуйста, обратите внимание на примеры ниже на этой странице и используйте эти примеры в качестве «руководства», чтобы переписать вашу функцию, или, по крайней мере, добавьте к середине if что-нибудь, чтобы проверить это условие, например:

if ( null != $line && count($line) != 2 || $line === false ) continue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...