警告:sizeof():参数必须是实现可计数php7.2的数组或对象

问题描述 投票:0回答:2

我更新到PHP 7.2,它创建了一个数组(无双关语)。我一直在淘汰它们(主要是这些sizeof和count()警告。我们遇到的一个错误:

警告:sizeof():参数必须是在第236行的/usr/www/domain/phpmyd/includes/class_registry.php中实现Countable的数组或对象。>

我尝试过这样修复它:if (sizeof($this->config) < 1) {对此:if (!empty($this->config) &&(sizeof($this->config) < 1)) {

但是它会产生很多如下所示的错误,但是,我们以相同的方式修复了该错误,并且效果很好。改变这个:if (0 < sizeof($this->language)) {对此:if (!empty($this->language) && (0 < sizeof($this->language))) {

基本上消除了相同的错误。现在,请记住,以上警告是仅剩的错误。其他所有内容都可以正常运行,但是,如果我“修复”警告,则会收到一堆错误,这些错误会破坏站点并且显得无关紧要。因此,如果我替换第一个字符串,则所有这些错误都会出现:

  • 警告:使用未定义的常量ADDON_DISCOUNT_CODES-假定“ ADDON_DISCOUNT_CODES”(这将在以后的版本中引发错误第6行的/usr/www/domainlistings/phpmyd/index.php中的PHP代码]
  • 警告:使用未定义的常量ADDON_BLOG-假定为'ADDON_BLOG'(这会在将来的PHP版本中引发错误)/usr/www/domainlistings/phpmyd/cp/template/default/admin_header.tpl在第134行
  • 警告:使用未定义的常量ADDON_LINK_CHECKER-已假定“ ADDON_LINK_CHECKER”(这会在以后的版本中引发错误PHP)中/usr/www/domainlistings/phpmyd/cp/template/default/admin_header.tpl在第179行
  • 这些错误没有出现,并且在我改变之前,那些东西工作得很好。if (sizeof($this->config) < 1) {

这是如何链接的?我不确定这是怎么回事,哪条线会影响或破坏其他(看似无关)的事情。初始问题的完整代码(第236行):

/**
     * Get a configuration value
     * @param string $key
     * @return mixed
     */
    public function getConfig($key) {
        if (sizeof($this->config) < 1) {
            $this->loadConfig();
        }
        return isset($this->config[$key]) ? $this->config[$key] : false;
    }

有什么想法吗?

我更新到PHP 7.2,它创建了一个数组(无双关语)。我一直在淘汰它们(主要是这些sizeof和count()警告。我们有一个错误:警告:sizeof():参数...

php sizeof php-7.2
2个回答
1
投票

对于初学者来说,不使用sizeof,但是使用count;)便宜的改进-总是少一个操作码。


2
投票

[我认为这里发生的事情是,您最初进行的更改确保了loadConfig()永远不会发生,并且loadConfig()中的某些内容负责定义所有在更改后会被警告的常量。

© www.soinside.com 2019 - 2024. All rights reserved.