PHP 7.2 count()函数不起作用

时间:2018-06-03 14:16:52

标签: laravel count php-7.2

我有一个工作的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旧版本中工作。什么是最容易解决的问题。

3 个答案:

答案 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 ) )