【发布时间】:2018-06-03 14:16:52
【问题描述】:
我有一个工作的 php 应用程序,它在 php 7.0 版本上运行良好。但是当我将 php 版本升级到 7.2 时。我收到此错误:
count(): Parameter must be an array or an object that implements Countable
我在将数据与计数函数进行比较时遇到代码错误。例如这是我的代码:
$keytest = KeyUser::where('key', '=', $key)->first();
if (count($keytest) == 1) {
//logic ...
}
我在运行查询的地方使用 laravel,如果它等于 1,那么逻辑应该可以工作。
所以我的问题是我已经在许多控制器上编写了这种逻辑,如果我必须逐个更改所有内容,它可能会成为噩梦。那么有什么方法可以让我编写一个全局函数来使计数工作,因为它在 php 旧版本中工作。什么是最简单的解决方法。
【问题讨论】:
-
这是合乎逻辑的。首先返回对象。您应该使用 get() 方法来检索数组
-
尝试做 var_dump($keytest) 并检查 $keytest 返回的类型是什么
-
我可以这样做,但我需要更改所有代码我的问题是我们可以编写任何全局函数以使其可以工作我的应用程序非常大。
-
github.com/yiisoft/yii/issues/4167 php 对计数功能进行了更改我需要一个解决方案才能使其工作。
-
这实际上是可证明的:3v4l.org/MFVQC -- 老实说非常有趣。我认为您可以编写自己的
count()函数来检查is_object()并在这种情况下返回1,而不是抛出错误。在此检查之后,您执行旧的count()调用。但我不知道是否可以覆盖语言本身的内置函数,因此您可能需要更新对该函数的所有引用。