![](/img/trans.png)
[英]count(): Parameter must be an array or an object that implements Countable (laravel getting error)
[英]Message: count(): Parameter must be an array or an object that implements Countable in codeigniter model
我有 model 查询,但我收到错误消息:count(): Parameter must be an array or an object that implement Countable in some systems and in some of the systems its working fine.Here is the query was I get问题。
public function getChatPlanProvidersInfoById($planId) {
$providersArr = array();
$this->db->select('ppm.price as plan_price, ppm.offer_start, ppm.offer_end, ppm.validity_period, pipm.provider_id, pipm.provider_group_id');
$this->db->from('chatinstance_provider_mapping pipm');
$this->db->join('chatplan_instance ppm', 'ppm.id = pipm.chatplan_instance_id');
$this->db->where('pipm.chatplan_instance_id', $planId);
$query = $this->db->get();
if ($query->num_rows() > 0) {
$providersInfo = $query->result();
if (count($providersInfo) > 0) {
$providersArr['offerInfo'] = array('offer_start' => $providersInfo[0]->offer_start, 'offer_end' => $providersInfo[0]->offer_end, 'valid_period' => $providersInfo[0]->validity_period);
$providersArr['plan_price'] = $providersInfo[0]->plan_price;
foreach ($providersInfo as $provider) {
if (!empty($provider->provider_id)) {
$pInfo = $this->getProviderInfoById($provider->provider_id);
$providersArr['providerInfo'][] = $pInfo;
} else if (!empty($provider->provider_group_id)) {
$pInfo = $this->getProviderGroupInfoById($provider->provider_group_id);
if (count($pInfo) > 0) {
$providersArr['providerInfo'][] = $pInfo;
} else {
$providersArr['providerInfo'][] = array();
}
}
}
}
}
return $providersArr;
}
如果条件计数($pInfo)出现此错误
if (count($pInfo) > 0) {
$providersArr['providerInfo'][] = $pInfo;
} else {
$providersArr['providerInfo'][] = array();
}
它在您的系统上运行的原因可能是您使用的是PHP版本5.6或< 7.2
与版本 7.2 一样,如果您将null
或false
传递给count()
,则会收到警告
$data[5] = 7;
var_dump(count($data)); // It will return 1
var_dump(count(null)); // It will give Warning: count(): Parameter must be an array or an object that implements Countable in...
var_dump(count(false)); // It will give Warning: count(): Parameter must be an array or an object that implements Countable in...
所以在你的情况下
您应该在传递给count()
之前检查$pInfo
,如下所示
if ($pInfo && count($pInfo) > 0) {...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.