首页 > 解决方案 > 自迁移到 Symfony 3 以来,foreach on null 会引发错误

问题描述

我将我的 Web 应用程序从 Symfony 2 迁移到 3。从那时起,每当在 null 上执行 foreach 循环时,都会引发错误(“无效参数”)。

例子:

$myResults = null;

foreach ($myResults as $item) {
   // do something
}

我如何像以前一样实现这一点,不会引发错误?

标签: phpsymfony

解决方案


这是升级到较新的 PHP 版本 (7.1+) 时引入的错误。

您可以通过在交互式 php shell 中执行代码示例来验证这一点,而无需加载任何 Symfony 代码:

$ php -a
Interactive shell

php > $var = null;
php > foreach ($var as $v) {}
PHP Warning:  Invalid argument supplied for foreach() in php shell code on line 1

您也可以在3v4l.org上验证这一点

为了解决这个问题,您必须在循环之前检查 null 或(暂时)返回到旧的(不受支持的!)PHP 版本。根据您的代码输入的好坏,有一些静态代码分析工具可以帮助您找到必须保护的循环。


推荐阅读