Warning: count(): Parameter must be an array or an object that implements Countable in/www/wwwroot/blog/wp-includes/post-template.php on line 284解决方法

发布于 2020-03-18  2.74k 次阅读


本文于 2020年3月21日 3:48 更新,注意查看最新内容

前言

前两天一直在倒腾博客访问速度慢的问题,当时尝试了水煮鱼的WPJAM插件,因为插件要求PHP版本最低为7.2,所以不得不升级了PHP版本,升级之后打开文章会有警告:Warning: count(): Parameter must be an array or an object that implements Countable in/www/wwwroot/blog/wp-includes/post-template.php on line 284,通过度娘,找到了解决方法。

解决

造成警告的原因是版本更新,部分方法变得更加严谨,当传递一个无效参数的时候,count()函数会抛出warning的警告。

首先,找到存在问题的文件,再找到报错的行数。

假设原代码是(复现代码懒得去找了):

if (count($tombstones) > 0) ;

则改成:

if (count((array)$tombstones) > 0) ;

保存之后刷新,警告就没有了。

扩展

当时看着修改后的代码,总觉得有些陌生,因为我记得PHP的强制转换应该不是这样的,

后来几经查找,发现自己记忆存在偏差,因为之前敲了很长一段时间JS,误以为JS的强制转换是PHP的强制转换。

参考

《Warning: count(): Parameter must be an array or an object that implements Countable in line 302解决方法》

《php 数据类型转换强制转换的三种方式》

《JS中的强制类型转换》


这短短的一生,我们最终都会失去。