当前位置: 首页 > 知识库问答 >
问题:

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

端木骞尧
2023-03-14

有人能帮我吗?更新到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;
        }
    }

参数必须是一个数组或一个对象,实现可数的...

错误在这些行内:

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

我怎样才能纠正这个错误,这样我就不会得到这个错误?是结尾括号的东西吗?

共有1个答案

秦景同
2023-03-14

您可以尝试反转计数($meta_框)和is_数组($meta_框):

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

如果$meta_boxes不是数组,第一个条件将不确定,计数将不会被测试

 类似资料: