php - 自迁移到 Symfony 3 以来,foreach on null 会引发错误
问题描述
我将我的 Web 应用程序从 Symfony 2 迁移到 3。从那时起,每当在 null 上执行 foreach 循环时,都会引发错误(“无效参数”)。
例子:
$myResults = null;
foreach ($myResults as $item) {
// do something
}
我如何像以前一样实现这一点,不会引发错误?
解决方案
这是升级到较新的 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 版本。根据您的代码输入的好坏,有一些静态代码分析工具可以帮助您找到必须保护的循环。
推荐阅读
- php - 警告:在第 234 行遇到一个非数字值
- php - MyISAM 比赛条件 / LOCK TABLES
- javascript - 将 .json 配置传递给外部 js 以获得重力主题
- hazelcast - Hazelcast Jet 卡在启动 Job 上
- javascript - 如何将 angular.js 数据绑定到导入的 html?
- c++ - C++ 重载相等运算符。我应该编写函数来接受通过引用或值传递的参数吗?
- vue.js - $store.state 需要重新加载页面来更新 Vuejs
- c++ - 为什么使用“高兴”库进行 opengl 初始化?
- sql - 如何使用 SQL 知道一个月内剩余的星期一、星期二、星期三、...和星期日的数量?
- sql-server - 为每个学生选择他们参加的每个科目的最新考试成绩