0

我正在使用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 注意:未定义的偏移量:第 5 行 script.php 中的 1

PHP 注意:未定义的偏移量:第 5 行 script.php 中的 2

    ............

PHP 注意:未定义的偏移量:第 5 行 script.php 中的 35

第5行是实际list() = $row

有没有办法解决这个问题?也许通过检查数组是否有值?

谢谢

4

1 回答 1

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.
}

例如,如果您有数字索引。

这将使您对将要解析的格式进行更严格的控制,并且在出现问题时,可以更快地调试确切缺少值的位置或以其他方式遵循逻辑。

于 2014-02-07T15:20:53.020 回答