Как решить Oscommerce, Предупреждение: sizeof (): параметр должен быть массивом или объектом, который реализует Countable - PullRequest
0 голосов
/ 13 июля 2020

Я устанавливаю последнюю версию фреймворка OSCommerce. в бэкэнд-категориях / продуктах отображается ошибка: Предупреждение: sizeof (): Параметр должен быть массивом или объектом, который реализует Countable в C: \ xampp \ htdocs \ oscommerce \ catalog \ admin \ includes \ functions \ general . php в строке 93 . Я пытаюсь использовать is_array() и count(), но все еще не работает, ниже код

    function tep_get_path($current_category_id = '') {
    global $cPath_array;

    if ($current_category_id == '') {
      $cPath_new = implode('_', $cPath_array);
    } else {
      if (sizeof($cPath_array) == 0) {
        $cPath_new = $current_category_id;
      } else {
        $cPath_new = '';
        $last_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where 
        categories_id = '" . (int)$cPath_array[(sizeof($cPath_array)-1)] . "'");
        $last_category = tep_db_fetch_array($last_category_query);

        $current_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where 
        categories_id = '" . (int)$current_category_id . "'");
        $current_category = tep_db_fetch_array($current_category_query);

        if ($last_category['parent_id'] == $current_category['parent_id']) {
          for ($i = 0, $n = sizeof($cPath_array) - 1; $i < $n; $i++) {
            $cPath_new .= '_' . $cPath_array[$i];
          }
        } else {
          for ($i = 0, $n = sizeof($cPath_array); $i < $n; $i++) {
            $cPath_new .= '_' . $cPath_array[$i];
          }
        }

        $cPath_new .= '_' . $current_category_id;

        if (substr($cPath_new, 0, 1) == '_') {
          $cPath_new = substr($cPath_new, 1);
        }
      }
    }

    return 'cPath=' . $cPath_new;
  }

1 Ответ

0 голосов
/ 13 июля 2020

sizeof - это псевдоним count .

count Поведение изменено в Php 7.2.

count () теперь выдает предупреждение о недопустимых счетных типах, переданных в параметр array_or_countable.

Возможные причины:

var_dump(count([])); // OK
var_dump(count((object)[])); // Warning
var_dump(count(null)); // Warning
var_dump(count(false)); // Warning
var_dump(count(123)); // Warning
var_dump(count('123')); // Warning

Пожалуйста, проверьте тип данных из $cPath_array с использованием var_dump . $cPath_array реализован как массив в коде, но для какого его фактического значения генерируется предупреждение.

Неверное и временное решение: Понизьте версию Php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...