!in_array无法识别类别

时间:2013-07-24 作者:Sebastian Starke

我想用类别填充数组,并试图用in\\u数组防止重复:

if ( $query->have_posts() ) {
    $categories = array();
    while ( $query->have_posts() ) {
        $query->the_post();
        foreach((get_the_category()) as $category) {
            if(!in_array($category, $categories)) {
                $categories[] = $category;
            }
        }
    };
} ?>
但这些类别仍然被计算了两次(或更多,取决于帖子的数量)。

1 个回复
最合适的回答,由SO网友:Charles Clarkson 整理而成

可以这样尝试:

if ( $query->have_posts() ) {

    $categories = $category_ids = array();

    while ( $query->have_posts() ) {

        $query->the_post();

        foreach ( ( get_the_category() ) as $category ) {

            if ( ! in_array( $category->term_id, $category_ids ) ) {
                $category_ids[] = $category->term_id;
                $categories[] = $category;
            }

        }
    };
}
get_the_category() 返回对象数组。我没有检查in_array 文档,但我怀疑它不包括对象匹配。$category_ids 是仅用于比较的ID的数组。

结束