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 不是数组,第一个条件将不成立并且不会测试计数
有人可以帮我解决这个问题吗?更新到 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 不是数组,第一个条件将不成立并且不会测试计数