PHP count(): Параметр должен быть массивом или объектом, который реализует Countable

#php #count

#php #count

Вопрос:

Вот фрагмент моего кода в файле public_html/wp-content/themes/arabv3/CustomMetaBox/CMB2.php , начиная со строки 565

         // if it's an array of one, extract it
    elseif ( is_array( $this->prop( 'object_types' ) ) amp;amp; count( $this->prop( 'object_types' ) === 1 ) ) {
        $cpts = $this->prop( 'object_types' );
        $type = is_string( end( $cpts ) )
            ? end( $cpts )
            : false;
    }
  

Когда я запускаю код, я получаю следующую ошибку:

PHP Предупреждение: count(): Параметр должен быть массивом или объектом, который реализует Countable в

Комментарии:

1. очевидно, что свойство, на которое count() действует, не является массивом или countable, ссылающимся на $this->prop('object_types') . Он действует на логическое значение, поскольку count() содержит сравнение внутри

2. У вас опечатка. Измените count($this->prop('object_types') === 1 ) на count($this->prop('object_types')) === 1 .

Ответ №1:

Ваша версия PHP? если это 7.2, то функция count выдает ошибку при подсчете stdclass .

Пример:

 $count_value = stdClass Object( [asset_id] => 234 [parent_asset_id] => '');

echo count($count_value);
  

// это выдает ошибку в случае версии php 7.2

вы можете преобразовать тип в массив или создать этот стандартный класс в виде массива .

вы можете проверить php doc :-

https://www.php.net/manual/en/migration72.incompatible.php#migration72.incompatible.warn-on-non-countable-types