在php中为每个循环选择x项目的数量?

时间:2013-07-09 10:17:23

标签: php wordpress foreach

我不知道这是否可行,但我试图从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个块中

任何帮助都会非常赞赏 谢谢:))

2 个答案:

答案 0 :(得分:2)

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

$blocks = array_chunk($pages, 8);

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

答案 1 :(得分:1)

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

因此,如果$i % 8 == 0,请开始分组。假设您计划使用<div>或类似的东西对事物进行分组。您可以在for循环结束时$i % 8 == 7之后关闭分组。

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