奇怪的问题,这在我的本地安装上运行良好,但在我的实时服务器上,当值为0时抛出错误。
ARRAY_SUM()期望参数1为ARRAY, NULL给定
<?php
function author_rating_total() {
$user_id = get_the_author_meta( 'ID' );
$query = array (
'author' => $user_id,
'suppress_filters' => 'true', //lets skip some unnessecery sql queries
'posts_per_page' => -1
);
$queryObject = new WP_Query($query); while($queryObject->have_posts()) : $queryObject->the_post();
$post_ratings_data = get_post_custom(get_the_id());
$post_ratings_score = intval($post_ratings_data['epicredvote'][0]);
$ratings_array[] = $post_ratings_score;
endwhile;
$ratings_sum = array_sum($ratings_array);
if ($ratings_sum > 0) {
$ratings_sum = '' . $ratings_sum;
}
echo $ratings_sum;
wp_reset_query();
}
?>
如果你在while循环之前定义了$ratings_array,那么它应该可以工作
$ratings_array = array();
$wpQuery = etc
或如果你在array_sum()周围包装条件语句:
$ratings_sum = 0;
if (is_array($ratings_array)){
$ratings_sum = array_sum(etc);
}
我刚刚做了一个条件,如果值不为空,尝试显示
if (count($ratings_sum) === 0) {
echo author_rating_total();
}