2013-01-23 120 views
0

我有一個div數組(博客文章)。說33個博客文章。我的任務是將它們分成第一個成對(將另外兩個div換成另一個),這樣我就有17個div(每個包含一對博客文章,最後一個可能只包含一個博客文章),然後 - 我想這15個雙元組再分成5個組(最後一個可能包含更少)......所以最終我有3個塊,每塊最多包含5個塊,每塊包含兩篇博客文章。我是否足夠清楚了?將數組拆分成數組php

當然,所有帖子的總數是未知的,所以我必須使其自動工作。

尋找答案我找到了關於函數array_chunk的問題,它確實如此 - 將數組拆分成數組......我的情況 - 我必須運行這個函數兩次。和它完美的作品:)

$posts = array(1,2,3,4 ... 33); 
$pairs = array_chunk($posts, 2) // $pairs will contain an array of 17 arrays each containing two elements 
$wrap = array_chunk($pairs, 5) // $wrap will contain an array of 3 arrays each containing an array of pairs 

困擾我的是,當我輸出全部通過foreach的div我碰巧自然有3套foreaches ......首先呈現3(或更多)的大包裝的唯一的事 - 然後 - 5對包裝,最後 - 一個foreach呈現兩個博客文章。

我知道另一種解決方案 - 在原始數組上運行foreach,並在適當的時刻打開和關閉合適的div,以及某些數學條件(例如if($i % 2 == 0) { //do stuff })。如果有人能夠幫助我解決這個問題,那麼我一直無法完成,並且會很高興。

我的問題如下:

  • 是否有顯著差異(在性能方面),至於如何 許多嵌套foreaches運行?
  • 是否有某種最佳實踐方法可用於 這種情況?或者可能有一個完全不同的方法。

回答

1

有多少嵌套的foreach運行有顯着差異(就性能而言)?

比方說你有100個帖子。所以它是50雙,10包。

  • 嵌套的foreach:50個循環×10次=循環100個循環
  • 單大循環使用%:100環...

在這兩種情況下同樣的事情。 And array_chunk usage will not cause any major difference in perfomance.

是否有某種爲在這種情況下使用哪種方法最佳實踐的?或者可能有一個完全不同的方法。

沒有。但是我寧願選擇嵌套循環,因爲它對另一個程序員來說看起來更乾淨,並且如果需要,你可以在每個子循環周圍包裝一個函數。

+0

我的計算與你的不同,彼得:)它需要160個循環,嵌套示例中不是100。 (這幾乎是兩倍)。如果你願意,可以看看這個小提琴(html窗口更具代表性) - http://jsfiddle.net/skip405/Bb7St/2/ – skip405

+0

@ skip405 http://jsfiddle.net/Bb7St/4/ :)) – Peter

+0

@ skip405和http://codepad.org/KtEchEmR :)) – Peter