PHP 7更新后参数必须是数组或实现Countable的对象

Parameter must be an array or an object that implements Countable after PHP 7 update

有人可以帮我解决这个问题吗?更新到 PHP 7.73(稳定)并更新主题和插件后发生。

/**
     * Get single meta box by name
     *
     * @param int    $post_id
     * @param string $control_name valid meta box name
     * @param bool   $remove_first remove first element
     *
     * @return array|boolean
     *
     * @access   public
     */
    public function get( $post_id, $control_name, $remove_first = true ) {
        $post_meta = get_post_meta( $post_id, $this->getId(), true );

        if ( $post_meta && RecursiveArray::searchKey( $control_name, $post_meta ) ) {

            $meta_boxes = RecursiveArray::searchRecursive( $post_meta, $control_name );

            if ( \count( $meta_boxes ) == 1 && \is_array( $meta_boxes ) && $remove_first ) {
                return $meta_boxes[ 0 ];
            }

            if ( is_array( $meta_boxes ) ) {
                $meta_boxes = RecursiveArray::removeEmpty( $meta_boxes );
            }

            return $meta_boxes;

        } else {
            return false;
        }
    }

Warning: count(): Parameter must be an array or an object that implements Countable in...

错误在这些行中:

if ( \count( $meta_boxes ) == 1 && \is_array( $meta_boxes ) && $remove_first ) {
                return $meta_boxes[ 0 ];
            }

如何更正此错误以免出现此错误?是不是跟右括号有关?

您可以尝试反转计数 ( $meta_boxes ) 和 is_array( $meta_boxes ) :

 if (  \is_array( $meta_boxes ) && \count( $meta_boxes ) == 1 && $remove_first ) {
             return $meta_boxes[ 0 ];
        }

如果 $meta_boxes 不是数组,第一个条件将不成立并且不会测试计数