通过foreach函数进行过滤

时间:2013-01-29 11:41:05

标签: php wordpress foreach

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

我需要做一个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++;
    
  • 1 个答案:

    答案 0 :(得分:1)

    如果您仔细阅读代码,您可能会看到它无效的原因。

    第一:范围

    阅读PHP manual中的变量范围。基本上,函数内部声明的变量只能在该函数内部使用,因此$all_authors在contributors()中为空,因为它从未被初始化。

    filtered_list函数应返回已过滤的作者列表,因此您应循环,$authors并将作者添加到$all_authors if {如果她有1个或更多帖子。循环之后,返回数组。

    现在,您可以通过将第一个函数的返回值设置为contributors中的$ all_authors来获取已过滤的列表(或者更好的是,只需将它们称为$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
    

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