【问题标题】:Selecting x amount of items from a for each loop in php?从 php 中的每个循环中选择 x 个项目?
【发布时间】:2013-07-09 10:17:23
【问题描述】:

我不知道这是否可能,但我试图从get_pages() function of Wordpress 获取分页,因为我需要这些页面与不同的类或在某些 div 中进行回显,以便稍后我可以使用 Javascript 管理它们以匹配愿望模板。

到目前为止,我有这个来回显内容:

$pages = get_pages('child_of='.$post->ID.'&sort_column=post_date&sort_order=desc');
            $i =0;
            foreach($pages as $page)
            {
                $content = $page->post_content;
                if(!$content)
                    continue;
                $i++;
                $content = apply_filters('the_content', $content);
                $doc = new DOMDocument();
                $doc->loadHTML($content);
                $xpath = new DOMXPath($doc);
                $imagesrc = $xpath->evaluate("string(//img/@src)");
                $imagehref = $xpath->evaluate("string(//a/@href)");

                for($i = 0; $i < count($content); $i+=5) {
                    echo "<li><a id='item-$i' href='$imagehref'><img src='$imagesrc'/></a></li>\n";
                    for($i = 5; $i < count($content); $i+=18) {
                        echo "more";
                    }
                }

所以现在我确实得到了所有项目,无论是 10 还是 50,但我想要的是把它们放在 8 个块中,这可以在每个块中做吗?或者还有另一种方法吗?

注意 我需要将大量帖子分成 8 个块

任何帮助都会真正感激 谢谢:)

【问题讨论】:

  • 我试图根据我认为你在问的问题来回答这个问题,但是再次查看你的代码我想知道底部的两个 for 循环的目的是什么。您能否详细说明为什么要先数 5,然后再数 18?

标签: php wordpress foreach


【解决方案1】:

@aelfric5578 的答案的替代方法是使用array_chunk 将数组分解为您需要的部分。您可以破坏原始的$pages 数组或在foreach 中生成一个数组并破坏它,以最适合您的方式进行,但我可能会破坏$pages 数组。这是使用原始$pages 的示例。

$blocks = array_chunk($pages, 8);

好处将是可读性和可维护性。由于您已经有一个迭代器——也许应该有两个,你似乎使用了两次相同的变量名——添加更多计数器可能会让人感到困惑。

【讨论】:

    【解决方案2】:

    您需要一个单独的计数器。由于您已经拥有$i,您可以使用条件运算符和模运算符。如果 $i 可以被 8 整除,$i % 8 返回零,否则返回该除数的余数。

    所以,如果$i % 8 == 0,开始你的分组。假设您计划用&lt;div&gt; 或类似的东西对事物进行分组。您可以在 for 循环结束时在 $i % 8 == 7 之后关闭分组。

    但是,您似乎设置了两次$i。是否有一个原因?为了使我的解决方案起作用,您需要为内部 for 循环使用不同的变量。

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 2012-10-04
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2017-10-17
      相关资源
      最近更新 更多