bug描述
前些天,收到一个无法导出 excel 的 bug,查看日志后发现项目报了一个Fatal error
Fatal error: 'break' not in the 'loop' or 'switch' context
报错的文件位置在 PHPExcel\Calculation\Functions.php 581 行
查看代码后发现该行所在的代码块里 return 后面接了个 break
} elseif(is_array($value)) {
return 64;
break; // 这行报的错
} elseif(is_string($value)) {
果断把 break 删掉,测试了一下发现功能就正常了
原因
因为公司不久前将 PHP 环境从 5.5 升级成 7.1
猜测是因为升级的原因,因为这个功能上线很久了,一直没有出现过这个bug
求证
今天在本地环境里测试了一下果然是这个原因
首先在本地环境里用 php5.6 的环境执行了以下代码
可以正常输出 0
下面切换成 php7.1 的环境执行
出现 Fatal error 错误
总结
以后看到这个错误,可以先找找是不是这个问题