我有一个工作的PHP应用程序,它在PHP 7.0版本上正常运行。但是当我将php版本升级到7.2时。我收到了这个错误:
count(): Parameter must be an array or an object that implements Countable
我在代码中遇到错误,我将数据与count函数进行比较。例如,这是我的代码:
$keytest = KeyUser::where('key', '=', $key)->first();
if (count($keytest) == 1) {
//logic ...
}
我正在使用laravel我运行查询并计算它是否等于1然后逻辑应该工作。
所以我的问题是我在许多控制器上写了这种逻辑,如果我必须逐一改变它,它可能会变成噩梦。那么有什么方法可以编写一个全局函数来使计数工作,因为它在php旧版本中工作。什么是最容易解决的问题。
答案 0 :(得分:3)
使用禁用错误处理可以处理此问题。请参阅此链接以获取解决方案:Laravel not compatiable with php 7.2
在这里,我找到了一个问题的解决方案,只需在控制器中编写此代码,或者如果您想让它适用于整个应用程序,请在route.php中编写此代码:
//app/Http/routes.php
if (version_compare(PHP_VERSION, '7.2.0', '>=')) {
// Ignores notices and reports all other kinds... and warnings
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
// error_reporting(E_ALL ^ E_WARNING); // Maybe this is enough
}
我知道这不是最好的解决方案,但它可能是一个很好的黑客。
答案 1 :(得分:2)
更改代码即可解决:
$keytest = KeyUser::where('key', '=', $key)->first();
if ($keytest) {
//logic ...
}
答案 2 :(得分:0)
尝试使用此功能代替“ 计数”,您可以使用“ 空”功能检查内容。例如:代替:
if ( count( $data ) )
使用:
if ( ! empty( $data ) )