如何解决Oscommerce,警告:sizeof():参数必须是数组或实现Countable的对象

我安装了最新版本的 OSCommerce 框架。在后端类别/产品错误中显示如下:

警告:sizeof():参数必须是在 C:\xampp\htdocs\oscommerce\catalog\admin\includes\functions\general.php 第 93 行中实现 Countable 的数组或对象

我尝试使用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;

  }


炎炎设计
浏览 174回答 3
3回答

慕丝7291255

我在文件中添加了以下代码,只是给出错误的行。if&nbsp;($cPath_array&nbsp;==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$cPath_array&nbsp;=&nbsp;array(); }它解决了我的错误

精慕HU

sizeof是count的别名。count的行为在 PHP 7.2 中发生了变化。count() 现在将对传递给 array_or_countable 参数的无效可数类型发出警告。可能的原因:var_dump(count([])); // OKvar_dump(count((object)[])); // Warningvar_dump(count(null)); // Warningvar_dump(count(false)); // Warningvar_dump(count(123)); // Warningvar_dump(count('123')); // Warning$cPath_array请检查使用var_dump的数据类型。$cPath_array在代码中作为数组实现,但生成警告的实际值是多少。糟糕的临时解决方案: 降级你的 PHP 版本。

慕工程0101907

您也可以使用empty(). 它检查变量是否为“假”。if (empty($cPath_array)) { }代替if (sizeof($cPath_array) == 0) { }
打开App,查看更多内容
随时随地看视频慕课网APP