2013-07-09 56 views
0

我不知道這是否可能,但我試圖從get_pages()function of Wordpress分頁,因爲我需要這些頁面與不同的類或一些div內的回聲,所以我可以用Javascript來管理它們以匹配期望的模板。在php中爲每個循環選擇x個項目的數量?

到目前爲止,我有這個呼應內容:

$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,是否可以在每個內部做一個?或者有另一種方式來做到這一點?

注意我需要大了一套崗位PLIT成8

塊任何幫助將是非常讚賞 謝謝:)

+0

我試圖根據我的想法回答這個問題,但再次查看您的代碼,我想知道底部兩個循環的目的是什麼。你能詳細說明爲什麼你在5點之前計數18嗎? – aelfric5578

回答

2

到@ aelfric5578的回答另一種方法是使用array_chunk到陣列打入您需要的部分。你可以打破原有的$pages陣列或者產生在foreach數組和打破,取其最適合你,但我可能會打破$pages陣列。以下是使用原始$pages的示例。

$blocks = array_chunk($pages, 8); 

好處是可讀性和可維護性。既然你已經有了一個迭代器 - 也許應該有兩個,你似乎兩次使用相同的變量名 - 它可能會添加更多的計數器會引起混淆。

+0

感謝隊友,這正是我需要的:) – jycr753

1

你需要一個獨立的計數器。由於您已有$i,因此可以使用條件運算符和模運算符。 $i % 8返回零如果$i是被8整除和分裂的否則的餘數。

所以,如果$i % 8 == 0,開始您的分組。假設你計劃用<div>或類似的東西來分組。在for循環結束時,您可以在$i % 8 == 7之後關閉分組。

然而,似乎你設置$i兩次。是否有一個原因?對於我的解決方案來說,你需要爲inner for循環使用一個不同的變量。

+0

這個工作的隊友,感謝隊友:) – jycr753

相關問題