PHP在foreach循环中跳过未定义的偏移量?

时间:2013-10-10 08:22:10

标签: php foreach skip notice

我正在尝试扫描每个包含excel文件的数百个文件夹。

这是简化的工作流程

  • 循环扫描文件夹
  • 获取第一个文件夹名称并通过一些正则表达式运行(从名称中获取一些信息)
  • 打开文件夹并打开
  • 中的excel文件
  • 扫描信息的excel文件(使用PHPExcel)
  • 将所有内容保存到数据库

好的所以这一切都运行得很好,除非我遇到一个损坏的excel文件。

问题是PHPEXCEL库无法读取它并且它通过“注意:未定义的偏移量:”而这会破坏我的 foreach 循环。

以下是我正在寻找的内容: 以某种方式跳过错误和通知的方式并继续使用下一个文件夹和文件

有办法吗? 感谢您的帮助。

好的,这是foreach循环:

foreach ($inputFileName as $key => $fileName) {
$objReader = PHPExcel_IOFactory::load($fileName);

$activeSheet = $objReader->getActiveSheet()->toArray(null,false,true,false);

echo "<pre>";
    echo $key;
echo "</pre>";
}

2 个答案:

答案 0 :(得分:1)

只是一个猜测:

foreach ($inputFileName as $key => $fileName) {
    $objReader = PHPExcel_IOFactory::load($fileName);

    if ($objReader) {
        $activeSheet = $objReader->getActiveSheet()->toArray(null,false,true,false);

        echo "<pre>";
            echo $key;
        echo "</pre>";
    }
}

函数在失败时返回false是很常见的。

答案 1 :(得分:0)

也许您可以在脚本开头使用函数error_reporting来跳过通知:

error_reporting(E_ERROR | E_WARNING | E_PARSE);

完成治疗后,将其恢复原来的值:

error_reporting(-1); //Report all errors

您可以在此处找到更多信息:http://php.net/manual/fr/function.error-reporting.php