Неопределенное смещение с помощью list()
Я анализирую большой файл CSV, используя SplFileObject
, Этот CSV имеет почти 100 000 записей и столбцов с множественными значениями.
Некоторые из этих столбцов пусты.
У меня есть следующий код:
$file = new SplFileObject($uploadedFile);
$file->setFlags(SplFileObject::READ_CSV);
// ignore the header
$it = new LimitIterator($file, 1);
foreach ($it as $row) {
list(
$email,
$name) = $row;
}
Когда я запускаю скрипт, я всегда получаю сообщение об ошибке:
Примечание PHP: Неопределенное смещение: 1 в script.php в строке 5
Примечание PHP: Неопределенное смещение: 2 в script.php в строке 5
............
Примечание PHP: Неопределенное смещение: 35 в script.php в строке 5
Строка 5 - фактическая list() = $row
Есть ли способ, которым я могу это исправить? Может быть, проверив, что массив имеет значения?
Спасибо
1 ответ
Я бы сделал это, вручную проверяя, существуют ли данные,
foreach ($it as $row) {
if(isset($row[0])) {
$email = $row[0];
} else {
// if you want to handle case where email is not present, just do something here
}
if(isset($row[1])) {
$name = $row[1];
}
// now here you have $email and $name set to values from the array.
}
например, если у вас есть числовые индексы.
Это дало бы вам более строгий контроль над форматом того, что будет анализироваться, и в случае проблем быстрее отлаживалось там, где точно отсутствует значение, или иным образом следовало бы логике.