PHP警告:count():参数必须是实现Countable的数组或对象

时间:2019-05-07 23:43:59

标签: php

当我在elementor中添加选择表单字段并尝试保存时,我收到一条错误消息。下面的代码就是问题所在

private function maybe_truncate_log() {
    /** @var Log_Item[] $log */
    $log = $this->get_log();

    if ( Log_Item::MAX_LOG_ENTRIES < count( $log ) ) {
        $log = array_slice( $log, -Log_Item::MAX_LOG_ENTRIES );
    }

    return $log;
}

3 个答案:

答案 0 :(得分:0)

当您的数组$log有时为空或为null时,会发生此错误,因此您应在count函数中使用它之前进行检查。检查下面的代码。

if(!empty($log)){
   if ( Log_Item::MAX_LOG_ENTRIES < count( $log ) ) {
        $log = array_slice( $log, -Log_Item::MAX_LOG_ENTRIES );
    }
}

答案 1 :(得分:0)

$log = $this->get_log();
$log = json_decode(json_encode($log), true);

这会将$ log从对象转换为数组。

答案 2 :(得分:0)

您的问题是不言而喻的,为了简单起见,这是应该起作用的代码:

private function maybe_truncate_log() {
    /** @var Log_Item[] $log */
    $log = $this->get_log();
    if(is_array($log)){
       if ( Log_Item::MAX_LOG_ENTRIES < count( $log ) ) {
         $log = array_slice( $log, -Log_Item::MAX_LOG_ENTRIES );
       }
    }

    return $log;
}