Magento Marketplace模块count()参数不符合要求报错求助
修复Magento Marketplace模块count()参数错误
错误详情
1个异常:
Exception #0 (Exception): 警告: count(): 参数必须是数组或实现Countable接口的对象,位于/bitnami/magento/app/code/Apptha/Marketplace/Block/Assignproduct/Manage.php第224行
Exception #0 (Exception): 警告: count(): 参数必须是数组或实现Countable接口的对象,位于/bitnami/magento/app/code/Apptha/Marketplace/Block/Assignproduct/Manage.php第224行
#1 count() 调用位置 [app/code/Apptha/Marketplace/Block/Assignproduct/Manage.php:224]
#2 Apptha\Marketplace\Block\Assignproduct\Manage->getFilterAssignProducts() 调用位置 [app/code/Apptha/Marketplace/Block/Assignproduct/Manage.php:75]
问题分析
错误根源是Manage.php第224行的count()函数接收了非数组/未实现Countable接口的对象,大概率是该变量在某些场景下返回了null、false或其他非可计数类型(比如数据库查询无结果时未返回空数组)。
修复步骤
- 定位代码:打开
app/code/Apptha/Marketplace/Block/Assignproduct/Manage.php,找到第224行的count()调用代码,示例如下:$count = count($targetVariable); - 添加类型校验:在调用
count()前先校验变量是否可计数,兼容不同PHP版本的写法:- PHP 7.3+ 直接使用
is_countable():$count = is_countable($targetVariable) ? count($targetVariable) : 0; - 兼容低版本PHP:
$count = (is_array($targetVariable) || $targetVariable instanceof Countable) ? count($targetVariable) : 0;
- PHP 7.3+ 直接使用
- 根源优化(可选):检查
getFilterAssignProducts()方法的逻辑,确保该方法始终返回数组或实现Countable的对象,比如数据库查询无结果时返回[]而非null。
内容的提问来源于stack exchange,提问作者JAE
相关产品推荐
相关产品推荐

