簡體   English   中英

消息:count():參數必須是一個數組或實現 codeigniter model 中的 Countable 的 object

[英]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 一樣,如果您將nullfalse傳遞給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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM