0

我在这里拉头发,我根本无法让它发挥作用。

我需要做一个 foreach 循环来获取网站中的所有作者,然后我需要过滤掉那些发表了 0 篇文章的作者,然后将作者的文章回显到一个特殊的 UL LI

  • 数组中最后一位作者的标记:

    我的代码目前有两个函数,一个是预过滤至少有一篇文章的所有作者,然后在第二个函数中计算过滤数组中剩下的作者数量,然后给数组中的最后一个条目一个特殊的 li 标签。到目前为止的代码:

    /*********************
        Echo Filtered List
        *********************/
        function filtered_list() {
            $authors = get_users('orderby=nicename');
            $all_authors = array();
             if ( count_user_posts( $author->id ) >= 1 ) {
                 return true;
            }
    
        }
    
    
        function contributors() {
    
        $i = 0;
        filtered_list();
        $len = count($all_authors);
        foreach ($all_authors as $author ) {
              if ( count_user_posts( $author->id ) >= 1 ) {
                    if ($i == $len - 1) {
                        echo "<li class='author-last clearfix'>";}
                    else {
                        echo "<li class='author clearfix'>";}
                    $i++;
    
  • 4

    1 回答 1

    1

    如果您通读代码,您可能会明白为什么它不起作用。

    第一:范围

    阅读PHP 手册中的变量范围。基本上,在函数内声明的变量仅在该函数内可用,因此$all_authors在contributors() 内为null,因为它从未被初始化。

    filtered_list函数应返回经过过滤的作者列表,因此您应该循环$authors并将作者添加到$all_authors当且仅当她有 1 个或多个帖子时。循环结束后,返回数组。

    现在,您可以通过将第一个函数的返回值设置为 $all_authors in contributors(或者更好的是,只需调用它们$authors)来获取过滤后的列表。

    现在您已准备好遍历作者列表并找到他们的帖子。为此,您需要两个循环。一份给作者,一份给帖子。

    foreach author in authors
        foreach post in author->posts
            if post is last post
                print special stuff
            else
                print normal stuff
            endif
        endforeach
    endforeach
    

    希望这会有所帮助,并且您会从中学到一些东西。要点是:逐行阅读您的代码并向自己解释它的作用。

    于 2013-01-29T11:55:21.240 回答